我有这样的情况。我需要用gradle在每次发布构建后保存当前日期。是否有可能将日期保存到gradle.properties文件中,以便我在下一个构建作业中可以读取它?
我的文件: gradle.properties:
version=0.0.1
date=
build.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
答案 0 :(得分:1)
您可以尝试执行以下操作:
php artisan tinker
假设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())
}
}
}
。
答案 1 :(得分:1)
方法getProperty
,findProperty
和setProperty
与gradle.properties
文件没有直接关系。相反,它们提供对build.gradle
所针对的Project
实例范围内的属性的访问。此范围包括许多不同的属性,其中包括所谓的 extra properties (来自gradle.properties
文件)。
但是,Gradle为此功能提供了一个名为WriteProperties
的任务类型。只需指定目标文件并定义一些属性即可:
task changeDate(type: WriteProperties) {
outputFile = file('gradle.properties')
property 'date', getDate()
}