Java Maven项目-一次构建并部署多个环境

时间:2019-09-30 10:00:23

标签: java maven jenkins deployment build

我正在一个Maven项目中,需要根据环境更改属性文件值,但应在所有环境中部署相同的WAR文件 。在这里,我们有三个选择可以实现-

1。 Java参数参数-我知道这是最好的选择,但我们不能使用它。我们不想进行任何代码级别更改。这背后有很多原因。

2。 WAR文件提取-这是实现的一种方法。我们可以在部署过程中一次构建WAR,运行脚本以解包战争>替换属性文件值(特定于env)>然后打包战争。但是,我们不允许拆包。因此,该解决方案没有用。

3。 Maven分析-这是我认为是解决方案的最后一种方法。在Pom中,我定义了多个配置文件。因此,基于配置文件,我们正在类路径上复制属性文件。 但是这里的问题是-我们需要按环境构建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>

0 个答案:

没有答案