【发布时间】:2012-06-05 13:02:15
【问题描述】:
我正在编写一个 Gradle 任务来生成应用程序部署所需的某个配置文件。我想让用户自定义生成文件的名称和位置。
任务类的粗略草图是:
class ConfigurationFileTask extends DefaultTask {
String configFileName = 'config.xml'
File configFilePath = new File(project.buildDir, configFileName)
}
这个想法是让用户随心所欲地覆盖文件名或整个文件位置。
我意识到上面的代码实际上并不能工作,因为project 在configFile 的初始化程序运行时没有定义;我的问题是找到正确的方法来做到这一点。
现在,我希望任务在更广泛的构建中成为一个好公民,这意味着其他任务应该能够引用它的属性。例如,我希望用户能够写:
task createConfigFile(type: ConfigurationFileTask) {
configFileName = 'app-config.xml'
}
jar {
from(createConfigFile.configFilePath)
}
jar.dependsOn createConfigFile
然后将生成的配置文件添加到 jar 中。请注意,在这种情况下,用户设置的是configFileName,但引用的是configFilePath。这意味着必须在设置名称后的某个时间计算路径。
那么,我如何提供一个可由用户设置但具有基于另一个属性的默认值的属性,以及该属性在何处可供其他任务使用?
【问题讨论】:
标签: gradle