如何根据个人资料将文件复制到我的 WAR?
How do I copy a file into my WAR based on profile?
我在 Mac Yosemite 上使用 Gradle 2.7。我有以下文件:
src/main/environment/dev/context.xml
src/main/environment/qa/context.xml
src/main/environment/prod/context.xml
我想要的是,如果我 运行 一个构建 gradle -Pqa build
,上面适当的 context.xml
文件被复制到我的 WAR
(到 WEB-INF/classes 目录很好)。如何使用 gradle 进行设置?
您必须使用环境变量来执行此操作。将系统属性放在一个文件中。在 build.gradle 中阅读它们,并在此基础上将 context.xml 包含到 war 中。
解决问题的方法有很多种。您可以在构建 war
文件时配置 sourceSets
、include
或 exclude
特定资源。您还可以使用单个 context.xml
并使用 ReplaceTokens
过滤器执行资源过滤。
我选择了sourceSets
:
apply plugin: 'war'
ext.env = project.hasProperty('env') ? project.env : 'dev'
sourceSets {
main {
resources {
srcDir "src/main/environment/$env"
}
}
}
诀窍是 include/process 只有 env
被传递。如果没有传递 env
,将选择 dev
进行进一步处理。看看 demo.
我在 Mac Yosemite 上使用 Gradle 2.7。我有以下文件:
src/main/environment/dev/context.xml
src/main/environment/qa/context.xml
src/main/environment/prod/context.xml
我想要的是,如果我 运行 一个构建 gradle -Pqa build
,上面适当的 context.xml
文件被复制到我的 WAR
(到 WEB-INF/classes 目录很好)。如何使用 gradle 进行设置?
您必须使用环境变量来执行此操作。将系统属性放在一个文件中。在 build.gradle 中阅读它们,并在此基础上将 context.xml 包含到 war 中。
解决问题的方法有很多种。您可以在构建 war
文件时配置 sourceSets
、include
或 exclude
特定资源。您还可以使用单个 context.xml
并使用 ReplaceTokens
过滤器执行资源过滤。
我选择了sourceSets
:
apply plugin: 'war'
ext.env = project.hasProperty('env') ? project.env : 'dev'
sourceSets {
main {
resources {
srcDir "src/main/environment/$env"
}
}
}
诀窍是 include/process 只有 env
被传递。如果没有传递 env
,将选择 dev
进行进一步处理。看看 demo.