如何从 gradle 构建更改属性文件中的值

Mal*_*ady 5 gradle build.gradle

我是 Gradle 新手。我正在使用 Eclipse Buildship 2.1.1。我想将构建时间戳包含在源代码中的属性文件中。我在 build.gradle 中做了类似的事情,

war {
    def propertyFile = file 
    "src/main/java/com/about/About.properties"
    def props = new Properties()
    propertyFile.withReader { props.load(it) }
    println "Before setProperty:"
    println props.getProperty('releaseDate')
    props.setProperty('releaseDate', new Date().format('yyyy-MM-dd-HH:mm:ss'))
 // propertyFile.withWriter { props.store(it) }
    println "After setProperty:"
    println props.getProperty('releaseDate')
    buildDir = new File(rootProject.projectDir, "gradleBuild/" + project.name)
}
Run Code Online (Sandbox Code Playgroud)

这将正确打印以下详细信息,

Before setProperty:
2017-11-22T19:28
After setProperty:
2017-11-24-10:53:57
Run Code Online (Sandbox Code Playgroud)

但这并没有反映在属性文件本身中。如果删除注释会propertyFile.withWriter { props.store(it) }引发错误,

No signature of method: java.util.Properties.store() is applicable for argument types: (java.io.BufferedWriter) values: [java.io.BufferedWriter@9a24ce]
  Possible solutions: store(java.io.OutputStream, java.lang.String), store(java.io.Writer, java.lang.String), sort(), sort(java.util.Comparator), sort(groovy.lang.Closure), size()
Run Code Online (Sandbox Code Playgroud)

这种方法正确吗还是我应该以其他方式这样做?

小智 4

您必须将属性写回文件才能更新文件。该行propertyFile.withWriter { props.store(it) }会抛出错误,因为该store方法需要 2 个参数。第二个参数是添加在文件顶部的注释,但null如果您不需要它也可以:

propertyFile.withWriter { props.store(it, null) }