如何根据配置文件将文件复制到我的WAR中?

时间:2015-10-27 16:44:56

标签: gradle properties-file profiles

我在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进行设置?

2 个答案:

答案 0 :(得分:1)

有许多方法可以解决问题。在构建sourceSets文件时,您可以配置includeexcludewar个特定资源。您还可以拥有单个context.xml并使用ReplaceTokens过滤器执行资源过滤。

我选择了sourceSets

apply plugin: 'war'

ext.env = project.hasProperty('env') ? project.env : 'dev'

sourceSets {
   main {
      resources {
         srcDir "src/main/environment/$env"
      }
   }
}

诀窍是只包括/处理传递的env。如果未通过env,则会选择dev进行进一步处理。看看demo

答案 1 :(得分:0)

您必须使用环境变量来执行此操作。在文件中具有系统属性。在build.gradle中读取它们并基于它将context.xml包含在war中。