我正在与一个相当简单的gradle问题作斗争但是尽管搜索我找不到解决方案。 非常简单,在多项目构建中,我需要根据它们加载的插件配置一些子项目。所以 如果子项目有插件'war'或'ear'这样做.. 我没有成功尝试以下内容:
subprojects {
if (it.plugins.hasPlugin('war') || (it.plugins.hasPlugin('ear') {
apply plugin: 'my super special plugin'
....
....
}
}
上面从不应用插件:'我的超级特殊插件'
有什么建议吗? 感谢
答案 0 :(得分:2)
Gradle在从子项目评估build.gradle之前执行subprojects
闭包。因此,目前没有关于来自build.gradle
的插件的信息。
要在评估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
来配置子项目。通过在适当的位置使用subproject/build.gradle
,此共享gradle文件可能会包含在apply from: '../common.gradle'
中。