在我们公司,我们编写了自定义gradle插件,当应用程序插件存在时,它正在做一些事情。但是当插件之后的build.gradle中包含应用程序插件时,我们的插件不会发现应用程序插件并且不会执行操作。
有没有办法在gradle中强制执行插件申请顺序?还是其他任何解决方案?
我们插件的摘录:
void apply(Project project) {
if (project.plugins.hasPlugin(ApplicationPlugin) {
//some stuff, doesn't work if "application" appears after this plugin
}
}
答案 0 :(得分:3)
根据this thread on the Gradle forums,withType(Class)
和withId(String)
进行了延迟评估,仅在应用引用的插件时应用。
void apply(Project project) {
project.plugins.withType(ApplicationPlugin) {
//some stuff, doesn't work if "application" appears after this plugin
}
}
答案 1 :(得分:0)
据我所知,经过一些调查,只有解决方案是保留应用插件的顺序。
答案 2 :(得分:-1)
为什么不使用插件依赖项。您的自定义gradle插件应该依赖于ApplicationPlugin。
请参阅GroovyPlugin中的以下代码,该代码依赖于JavaPlugin。
public void apply(Project project) {
project.getPlugins().apply(GroovyBasePlugin.class);
project.getPlugins().apply(JavaPlugin.class);
project.getConfigurations().getByName(COMPILE_CONFIGURATION_NAME).extendsFrom(
project.getConfigurations().getByName(GroovyBasePlugin.GROOVY_CONFIGURATION_NAME)
);
configureGroovydoc(project);
}