2017-08-29 24 views
0

我正在打一个相当简单的gradle问题,但尽管搜索我找不到解决方案。 非常简单,在多项目构建中,我需要根据它们加载的插件配置一些子项目。所以 如果子项目有插件“战争”或“耳朵”做.. 我曾尝试没有成功如下:Gradle - 基于插件存在配置子项目

subprojects { 
    if (it.plugins.hasPlugin('war') || (it.plugins.hasPlugin('ear') { 
     apply plugin: 'my super special plugin' 
     .... 
     .... 
    } 
} 

以上从来没有适用的插件:“我的超级特殊插件”

任何建议? 谢谢

回答

1

在评估来自子项目的build.gradle之前,Gradle执行subprojects闭包。因此,目前没有关于build.gadle插件的信息。 要在对subproject/build.gradle进行评估之后执行一些代码,您应该使用ProjectEvaluationListener。 例如:

subprojects { 
    afterEvaluate { 
     if (it.plugins.hasPlugin('war') || (it.plugins.hasPlugin('ear') { 
      it.plugins.apply 'my super special plugin' 
      .... 
      .... 
     } 
    } 
} 

还要注意有关it.plugins.apply 'my super special plugin'而不是apply plugin: 'my super special plugin'

另一种选择是使用共享common.gradle至极将配置子项目。这个共享的gradle文件可能包含在subproject/build.gradle中,在适当的位置使用apply from: '../common.gradle'

相关问题