Проект Java Maven - однократная сборка и развертывание нескольких сред - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над проектом 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>
...