Gradle Task 入門 5 定制化task

需求

我們這個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 +
                '}';
    }
}

要點:

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

再次查看我們的配置,也得到了修改.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容