在Gradle 2.1之前,我可以通过使用allProjects闭包将插件应用于所有项目(当然,通过prepreisly解析jar):
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
}
}
allprojects {
apply plugin: "com.jfrog.artifactory"
}
Run Code Online (Sandbox Code Playgroud)
使用新的发布机制,看起来plugins封闭不能在内部使用allprojects:
allprojects {
plugins {
id "com.jfrog.artifactory" version "3.0.1"
}
}
Run Code Online (Sandbox Code Playgroud)
失败了:
"无法在根项目中找到参数[build_xxxx_run_closure1_closure4 @ yyyyy]的方法插件()
使用plugins闭包的规则是什么?该插件仅适用于当前项目吗?如果是这样,如何在不重复plugins每个构建内部的闭包的情况下将其应用于所有项目?
Mar*_*ira 57
新plugins {...}语法不能在一个allprojects {...}或subprojects {...}闭包中使用.此外,它只能在构建脚本中使用(没有脚本插件,init脚本等).如果你想避免必须单独将插件应用于每个项目,我建议使用旧的表示法.这是Gradle团队意识到的问题,将来会在未来的版本中引入解决方案.
更新:从Gradle 3.0开始,您可以稍微修改一下.您仍然必须明确使用,apply()但您不再需要处理所有buildscript { }废话以获取类路径上的插件.这也允许您有条件地应用插件.有关更多信息,请查看Gradle 3.0 发行说明.
plugins {
id 'my.special.plugin' version '1.0' apply false
}
allprojects {
apply plugin: 'java'
apply plugin: 'my.special.plugin'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17598 次 |
| 最近记录: |