在我的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
我创建了一个渐变任务来更新我的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时引发冲突。
有什么想法可以让我摆脱这种评论吗?甚至是设置弹簧轮廓的更好方法?
谢谢!
我认为ant不可能,因为它是用java.util.Properties
类实现的,并且在javadoc中说:
。。。注释行总是由ASCII组成#字符,当前日期和时间(好像由toString生成当前时间的Date方法(,并使用行分隔符作为由编写器生成。
因此,为了避免这种情况,您必须以其他方式更改属性文件中的值。例如,通过如下配置ProcessResources
Gradle任务:
processResources {
filesMatching('**/*.properties') {
filter {
it.replace('@ENV@', "$env")
}
}
}
该值应在application.properties
内设置为@ENV@