gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:56:21 26 4
gpt4 key购买 nike

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

最佳答案

如果是我,我会遵循 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"
}

关于java - 如何在gradle构建期间更改配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54381780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com