如何强制执行gradle插件应用命令?

时间:2015-02-25 23:38:25

标签: gradle

在我们公司,我们编写了自定义gradle插件,当应用程序插件存在时,它正在做一些事情。但是当插件之后的build.gradle中包含应用程序插件时,我们的插件不会发现应用程序插件并且不会执行操作。

有没有办法在gradle中强制执行插件申请顺序?还是其他任何解决方案?

我们插件的摘录:

void apply(Project project) {
        if (project.plugins.hasPlugin(ApplicationPlugin) {
             //some stuff, doesn't work if "application" appears after this plugin
        }
}

3 个答案:

答案 0 :(得分:3)

根据this thread on the Gradle forumswithType(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);
}