在Gradle中进行资源过滤的推荐方法是在属性文件中包含令牌,然后在处理时替换它们。
实施例
# config.properties
hostname = @myhost@
并在build.gradle中执行类似下面的操作
processResources {
filter ReplaceTokens, tokens: [
"myhost": project.property('myhost')
]
}
这种方法的问题在于它从像eclipse这样的IDE运行时不会起作用。我希望属性文件没有Gradle特定的令牌,即只有
hostname = localhost
但在从Gradle构建时可以选择替换它。
答案 0 :(得分:24)
您可以使用以下内容(未经测试):
processResources {
filesMatching('**/config.properties') {
filter {
it.replace('localhost', project.property('myhost'))
}
}
}
或者您可以拥有一个默认文件,在IDE的开发过程中使用,并且有另一个包含标记的文件,并在使用gradle构建时替换开发文件。这样的事情(未经测试)
processResources {
exclude '**/config.properties'
filesMatching('**/config-prod.properties') {
setName 'config.properties'
filter ReplaceTokens, tokens: [
"myhost": project.property('myhost')
]
}
}
答案 1 :(得分:4)
如果你愿意,可以使用占位符这样的东西。
在 config.properties 文件
中var1=${var1}
var2=${var2}
在 gradle.properties 文件
中processResources {
filesMatching('**config.properties') {
expand(
'var1': project.property('var1'),
'var2': project.property('var2'),
)
}
}
答案 2 :(得分:1)
弹簧引导方法
project.version=X.X.X.X
info.build.version=@project.version@