【问题标题】:How to change configuration file during gradle build?如何在 gradle build 期间更改配置文件?
【发布时间】:2019-01-26 19:05:21
【问题描述】:

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

【问题讨论】:

    标签: java gradle deployment build


    【解决方案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" 
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      相关资源
      最近更新 更多