tasks.register("foo", WriteProperties::class) {
outputFile = layout.buildDirectory.file("foo.properties").get().asFile
val examplePropertiesFile = layout.projectDirectory.file("example.properties")
// Declare the file as input to the task to allow Gradle to track
inputs.file(examplePropertiesFile)
// Lazily compute/read the value
val examplePropsValue = provider {
val props = Properties()
examplePropertiesFile.asFile.inputStream().use {
props.load(it)
}
props["foo"]
}
// Configure the property for the task
property("foo", examplePropsValue)
}
1条答案
按热度按时间nwlls2ji1#
查看build script basics。
doLast { }
在任务动作列表的末尾执行。换句话说,首先执行主任务的操作,然后执行任何doLast
操作。您所做的是在任务执行后配置属性
foo
。由于之前没有配置要写入的属性,foo
任务本质上是noop,因为没有配置任何输入。此外,您还没有将该文件声明为任务的输入。这将导致incremental builds支持不佳。
完整示例: