Я работаю над проектом maven, где значения файла свойств необходимо изменить в зависимости от среды, но тот же файл WAR должен быть развернут для всей среды . Здесь у нас есть три варианта достижения -
1. Аргумент параметра Java - я знаю, что это лучший вариант, но мы не можем его использовать. Мы не хотим делать какие-либо изменения уровня кода. У нас есть несколько причин для этого.
2. Извлечение файла WAR - Это один из способов достижения. Мы можем создать WAR один раз и во время развертывания, запустить скрипт, чтобы распаковать War> Заменить значение файла свойств (специфическое для env)> А затем Pack the War. Однако мы не можем распаковывать. Так что это решение бесполезно.
3. Maven Profiling - это последний подход, который я рассматриваю как решение. В Pom я определил несколько профилей. Поэтому, основываясь на профиле, мы копируем файл свойств на путь к классу. Но здесь проблема заключается в - нам нужно построить WAR для среды, которая нарушает требование - " Построить один раз и развернуть везде "
Мне нужно ваше предложение и подходчтобы удовлетворить мои требования - Построить после развертывания для нескольких сред
У меня есть несколько идей, которые я думаю попробовать, но не уверен, возможно ли это технически или нет-
Скомпилируйте исходный код один раз, и тот же скомпилированный код можно использовать для объединения WAR. А во время связывания War мы можем использовать функцию профилирования Maven для замены значения файла свойств. Но я не знаю, как этого добиться с помощью конфигурации Maven, Pom.xml.
Я прикрепил свой текущий фрагмент конфигурации профилирования maven.
<profile>
<id>dev</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-prod-resources</id>
<!-- <phase>process-classes</phase> -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${basedir}/src/main/resources</outputDirectory>
<encoding>UTF-8</encoding>
<resources>
<resource>
<directory>${basedir}/src/main/profiles/DEV</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>