Как изменить файл конфигурации во время сборки Gradle? - PullRequest
0 голосов
/ 26 января 2019

У меня есть приложение Java EE.Мне нужно развернуть его на серверах приложений Weblogic и JBoss.По этой причине у меня есть две версии файлов web.xml для обоих серверов.И моя главная цель - изменить эту конфигурацию, когда я создаю проект для конкретных серверов.У меня есть идея, что я могу сохранить один файл web.xml в некотором каталоге {project} / files и, например, когда я собираю gradle для JBoss, я заменяю существующий файл web.xml файлом из {project} / files.Так что для этого мне нужно создать какое-то задание.Я новичок в учебе, поэтому, пожалуйста, дайте мне примерное решение, как я могу это сделать.

1 Ответ

0 голосов
/ 27 января 2019

Если бы это был я, я бы следовал правилам именования Gradle и сохранял файлы на

  • src / weblogic / webapp / WEB-INF / web.xml
  • ЦСИ / JBoss / WebApp / WEB-INF / web.xml

Эта структура допускает использование пользовательских классов и ресурсов 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" 
} 
...