[英]how to write variables to gradle property file when you execute task?
我有一個這樣的案例。 我需要在每次使用 gradle 發布版本后保存當前日期。 有沒有可能將日期保存到 gradle.properties 文件中,我可以在下一個構建作業中讀取它?
我的文件:gradle.properties:
version=0.0.1
date=
構建.gradle:
task changeDate() {
file = new File("changelogs/CHANGELOG_RELEASE_FROM_"+getDate()+".md");
project.setProperty("date",getDate());
}
它起作用並且不會將日期變量保存到 gradle.properties 中。
所以我希望我可以在我的 gradle.properties 文件中有一個發布日期:
gradle.properties:
version=0.0.1
date=12.04.2019
方法getProperty
、 findProperty
和setProperty
與gradle.properties
文件沒有直接關系。 相反,它們提供對Project
實例范圍內屬性的訪問, build.gradle
將根據該實例進行評估。 這個范圍包括許多不同的屬性,其中包括所謂的額外屬性(來自gradle.properties
文件)。
但是,Gradle 為這個功能提供了一個名為WriteProperties
的任務類型。 只需指定目標文件並定義一些屬性:
task changeDate(type: WriteProperties) {
outputFile = file('gradle.properties')
property 'date', getDate()
}
您可以嘗試執行以下操作:
import java.time.*;
task rel {
doLast {
ant.propertyfile(file: "gradle.properties") {
entry( key: "date", value: LocalDateTime.now())
}
}
}
假設, rel
是您的release
任務或任何其他任務,執行意味着您發布了。 您必須在其配置中添加一個doLast
閉包,以便在執行任務后運行一些代碼。 在此閉包中,您正在修改屬性文件中的某些屬性。
LocalDateTime
和它的導入只是為了舉例,您可以使用另一種方法確定獲取當前日期。
在您的情況下,它可能看起來像:
task changeDate() {
doLast {
ant.propertyfile(file: "gradle.properties") {
entry( key: "date", value: LocalDateTime.now())
}
}
}
但是你必須讓你的changeDate
以某種方式執行,如果不是的話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.