在Gradle中进行资源过滤的推荐方法是在属性文件中包含令牌,然后在处理时替换它们.
例
# config.properties
hostname = @myhost@
Run Code Online (Sandbox Code Playgroud)
并在build.gradle中执行类似下面的操作
processResources {
filter ReplaceTokens, tokens: [
"myhost": project.property('myhost')
]
}
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于从像eclipse这样的IDE运行时它不起作用.我希望属性文件没有Gradle特定的令牌,即只有
hostname = localhost
Run Code Online (Sandbox Code Playgroud)
但是从Gradle构建时可以选择替换它.
JB *_*zet 24
您可以使用以下(未测试):
processResources {
filesMatching('**/config.properties') {
filter {
it.replace('localhost', project.property('myhost'))
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以拥有一个默认文件,在IDE中进行开发时使用,并使用包含标记的另一个文件,并在使用gradle构建时替换开发文件.像这样的东西(未经测试)
processResources {
exclude '**/config.properties'
filesMatching('**/config-prod.properties') {
setName 'config.properties'
filter ReplaceTokens, tokens: [
"myhost": project.property('myhost')
]
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要,可以使用占位符之类的东西。
在config.properties文件中
var1=${var1}
var2=${var2}
Run Code Online (Sandbox Code Playgroud)
在gradle.properties文件中
processResources {
filesMatching('**config.properties') {
expand(
'var1': project.property('var1'),
'var2': project.property('var2'),
)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11621 次 |
| 最近记录: |