Ert*_* D. 4 resources war gradle
我正在尝试使用Gradle替换WAR插件任务中的资源文件.
基本上我有两个资源文件:
database.properties
database.properties.production
Run Code Online (Sandbox Code Playgroud)
我想实现的是替代"database.properties"与"database.properties.production"下最终WAR文件WEB-INF/classes中.
我尝试了很多东西,但对我来说最符合逻辑的是以下哪些不起作用:
war {
webInf {
from ('src/main/resources') {
exclude 'database.properties'
rename('database.properties.production', 'database.properties')
into 'classes'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是这会导致所有其他资源文件重复,包括重复的database.properties(具有相同名称的两个不同文件),并且数据库中仍然存在database.properties.production.
我需要一个没有重复的干净解决方案,而且WAR中没有database.properties.production.
如果您无法在运行时做出决定(这是处理特定于环境的配置的推荐最佳实践),eachFile那么您可能是最好的选择:
war {
rootSpec.eachFile { details ->
if (details.name == "database.properties") {
details.exclude()
} else if (details.name == "database.properties.production") {
details.name = "database.properties"
}
}
}
Run Code Online (Sandbox Code Playgroud)
PS:Gradle 1.7添加filesMatching(pattern) { ... },可能表现更好eachFile.
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |