ant.propertyFile每次都会更新评论

时间:2018-12-14 13:33:16

标签: spring spring-boot gradle properties

在我的build.gradle文件中,我具有以下变量来指示要建立的环境:

buildscript {
    ext {
        springBootVersion = '1.5.15.RELEASE'
        kotlinVersion = '1.2.70'
        queryDslVersion = '4.1.4'
        env = 'local'
    }
    // ...
}

在我的application.properties上,我有以下代码行,以便spring使用正确的application-{env}.properties

spring.profiles.active=local

我创建了一个gradle任务来更新application.properties上的该值,如下所示:

task setEnv {
    doFirst {
        ant.propertyfile(file: "$projectDir/src/main/resources/application.properties") {
            entry( key: "spring.profiles.active", value: "$env")
        }
        println "Building with env = $env"
    }
}

任务工作正常,只是它在更新的时间戳上添加了一条注释行。所以我的application.properties现在看起来像:

#Fri, 14 Dec 2018 11:22:04 -0200
spring.profiles.active=local

这是一个问题,因为每次有人构建项目时,它都会更改此文件,从而在提交并推送到git时引起冲突。

关于我如何摆脱该评论的任何想法?甚至是一种更好的设置弹簧轮廓的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为蚂蚁是不可能的,因为它是通过java.util.Properties类实现的,并且在javadoc中说:

  

...总是写一条注释行,由ASCII#组成   字符,当前日期和时间(就像由toString产生的一样)   当前时间的Date方法),并使用行分隔符   由Writer生成。

因此,为避免这种情况,您必须以其他方式更改属性文件中的值。例如,通过如下配置ProcessResources Gradle task

processResources {
  filesMatching('**/*.properties') {
    filter {
        it.replace('@ENV@', "$env")
    }
  }
}

该值应在@ENV@内设置为application.properties