我需要一个属性(一个)在应用插件时可用,并且(两个)允许在settings.gradle
文件中计算覆盖值。项目属性将是理想的,因为它可以在以下位置设置默认值gradle.properties
:
# gradle.properties
myProp=originalValue
这很棒,因为它可以用类似的命令行参数覆盖-PmyProp=newValue
,但我无法找到在执行之前(即在应用插件之前)覆盖settings.gradle
文件中属性的好方法。build.gradle
例如,所有这些rootProject.myProp
在插件应用程序中都保持不变:
// settings.gradle
rootProject.getProperties.put("myProp", "overrideValue")
settings.ext.myProp = "overrideValue"
settings.extensions.myProp = "overrideValue"
gradle.startParameters.projectProperties.myProp = "overrideValue"
我们不能在其中任何一个中做任何魔术,因为在块build.gradle
之前不能存在任何逻辑:plugins
// build.gradle
plugins {
id 'com.myCompany.myPlugin' version 1.0.0 // 'myProp' must be set by now
}
我能想到的一种解决方法是使用:
// settings.gradle
gradle.ext.myProp = "overrideValue"
...但是似乎没有访问gradle.ext
Java源代码(对于插件)中的属性的好方法,或者有吗?