Gradle字符串替換

在Gralde中我們可以很方便的替換Manifest中的字符串:

manifestPlaceholders = [UMENG_CHANNEL_VALUE: "myapp"]

但是,這種方式不適用于其他文件。

舉個栗子,首先要有個測試文件,Test.java:

public class Test {
    public static final String Str = "${TEST_KEY}";
}

然后build.gradle中添加函數和task:

def static replaceText(File file, String key, String value) {
    def fileText = file.text
    def regex = '\\$\\{' + key + '\\}'
    fileText = (fileText =~ /${regex}/).replaceAll(value)
    file.write(fileText)
}

task doSth {
    doLast {
        File file = new File("${projectDir}/Test.java")
        replaceText(file, 'TEST_KEY', 'this is test value')
    }
}

執行task doSth:

$ ./gradlew -q doSth

最后Test.java的${TEST_KEY}就被替換了:

public class Test {
    public static final String Str = "this is test value";
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容