在gradle构建期间如何更改配置文件?

时间:2019-01-26 19:05:21

标签: java gradle deployment build

我有Java EE应用程序。我需要将其部署到Weblogic和JBoss应用程序服务器。因此,两个服务器都有两个版本的web.xml文件。我的主要目标是在为特定服务器构建项目时更改此配置。我知道我可以在一个目录{project} / files中保留一个web.xml文件,例如,当我为JBoss构建gradle时,我用{project} / files中的文件替换了现有的web.xml文件。所以我需要为此创建一些gradle任务。我是gradle的新手,所以请给我一些大概的解决方法。

1 个答案:

答案 0 :(得分:1)

如果是我,我将遵循Gradle的命名约定并将文件存储在

  • src / weblogic / webapp / WEB-INF / web.xml
  • src / jboss / webapp / WEB-INF / web.xml

如果需要,此结构将允许将来在每个servlet容器中自定义Java类和资源

然后您可以在build.gradle中创建两个额外的任务

apply plugin: 'war' 
dependencies { ... } 
task weblogicWar(type: Zip) {
   dependsOn war
   from zipTree(war.archivePath).matching {
      exclude 'WEB-INF/web.xml' 
   } 
   from 'src/weblogic/webapp' 
   archiveName = "my-app-weblogic-${version}.war"
}
task jbossWar(type: Zip) {
   dependsOn war
   from zipTree(war.archivePath).matching {
      exclude 'WEB-INF/web.xml' 
   } 
   from 'src/jboss/webapp' 
   archiveName = "my-app-jboss-${version}.war"
}
// wire the tasks into the DAG
assemble.dependsOn weblogicWar
assemble.dependsOn jbossWar

您也可以循环执行此操作,例如:

['jboss', 'weblogic'].each { container ->
   task "${container}War"(type: Zip) {
      dependsOn war
      from zipTree(war.archivePath).matching {
         exclude 'WEB-INF/web.xml' 
      } 
      from "src/${container}/webapp" 
      archiveName = "my-app-${container}-${version}.war"
   }
   assemble.dependsOn "${container}War" 
}