需求
我們這個task就是修改配置文件并保存,我們將使用自己定義的task來實現(xiàn)這個需求
定義Task類
繼續(xù)沿用我們之前定義的類MyTag, 并加入了一個新的變量release
class MyTag {
String prefix;
String postfix;
Boolean release;
MyTag(String prefix, String postfix, Boolean release) {
this.prefix = prefix
this.postfix = postfix
this.release = release
}
@Override
String toString() {
return "MyTag{" +
"prefix='" + prefix + '\'' +
", postfix='" + postfix + '\'' +
", release=" + release +
'}';
}
}
要點:
- 自定義的task繼承 DefaultTask
- 使用@input和@OutputFile定義taks 輸入輸出
- 更多示例可以參考: https://docs.gradle.org/current/userguide/custom_tasks.html
class ReleaseVersionTask extends DefaultTask {
@Input
Boolean release
@OutputFile
File destFile
ReleaseVersionTask() {
this.group = "versioning"
this.description = "Release Version Class"
}
@TaskAction
void start() {
println "do task action ... ..."
project.ext.myNewTag.release = true;
Properties properties = new Properties()
project.ext.myTagFile.withInputStream {
stream -> properties.load(stream)
}
println properties.prefix.toString()
properties.setProperty('prefix', 'releaseVersion-prefix')
properties.setProperty('postfix', 'releaseVersion-postfix')
properties.setProperty('release', 'true')
println properties.prefix.toString()
project.ext.myTagFile.withWriter {
properties.store(it, null)
}
}
定義Task
task makeReleaseVersion(type: ReleaseVersionTask) {
release = project.ext.myNewTag.release
destFile = myTagFile
}
執(zhí)行
我們現(xiàn)在的配置文件mytag.properies內(nèi)容為
release=true
prefix=heng
postfix=ha
然后執(zhí)行我們的自己的task
//gradlew makeReleaseVersion
//得到結(jié)果:
> Task :makeReleaseVersion
do task action ... ...
heng
releaseVersion-prefix
再次查看我們的配置,也得到了修改.