1. 程式人生 > 其它 >Maven在傳統Spring專案中支援多環境打包

Maven在傳統Spring專案中支援多環境打包

技術標籤:javajavaEEjavamaven

本文以單體架構為例,技術體系採用單純Spring框架(未結合SpringBoot下回分解),在開發環境中支援多環境打包配置。常見環境有:開發、測試、與測試、生產等。本文采用Maven打包外掛maven-resources-plugin為例詳細說明如何配置及打包。

Maven等相關知識不是本文重點,如需要深入瞭解,歡迎自行谷歌或度娘。

一、常見配置目錄分類如下:

圖片

通過以目錄的形式約定配置檔案的存放地址,如dev下存放開發環境相關資料庫地址,使用者名稱密碼,redis的相關地址,Mq等中介軟體的地址等。

二、在pom.xml中定義相關環境標識。

<profiles>        <profile>            <id>dev</id>            <activation>                <activeByDefault>true</activeByDefault>            </activation>            <properties>                <package.environment>dev</package.environment>
</properties> </profile> <profile> <id>test</id> <properties> <package.environment>test</package.environment> </properties> </profile> <profile> <id>prod</id>
<properties> <package.environment>prod</package.environment> </properties> </profile> </profiles>

說明,activeByDefault表示預設使用開發環境。

三、外掛配置​​​​​​​

<build>        <finalName>${project.artifactId}</finalName>        <resources>            <resource>                <directory>src/main/java</directory>                <includes>                    <include>**/*.xml</include>                    <include>**/*.xls</include><include>**/*.xlsx</include><include>**/*.bpmn</include>                </includes>            </resource>            <resource>                <directory>src/main/resources</directory>                <filtering>true</filtering>                <includes>                    <include>**/*.properties</include>                    <include>**/*.xml</include>                    <include>**/*.xsd</include>                </includes>                <excludes>                    <exclude>dev/*</exclude>                    <exclude>test/*</exclude>                    <exclude>prod/*</exclude>                </excludes>            </resource></resources>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>${java.version}</source>                    <target>${java.version}</target>                    <encoding>${project.build.sourceEncoding}</encoding>                </configuration></plugin>            <!-- 不同環境的配置檔案選擇 -->            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-resources-plugin</artifactId>                <version>2.6</version>                <executions>                    <execution>                        <id>copy-resources</id>                        <phase>compile</phase>                        <goals>                            <goal>copy-resources</goal>                        </goals>                        <configuration>                            <!-- 覆蓋原有檔案 -->                            <overwrite>true</overwrite>                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>                            <!-- 也可以用下面這樣的方式(指定相對url的方式指定outputDirectory) <outputDirectory>target/classes</outputDirectory> -->                            <!-- 待處理的資源定義 -->                            <resources>                                <resource>                                    <!-- 指定resources外掛處理哪個目錄下的資原始檔 -->                                    <directory>src/main/resources/${package.environment}</directory>                                    <filtering>false</filtering>                                </resource>                            </resources>                        </configuration>                    </execution>                </executions>            </plugin>        </plugins>    </build>

以上是Maven多環境打包配置詳情。原理是採用maven的打包命令,通過打包外掛去自動載入指定環境的配置檔案,即可實現專案的多環境支援。結合Jenkins可進行多環境推送釋出。

四、打包​​​​​​​

mvn clean package -Pdevmvncleanpackage-Ptest

通過執行maven的package打包命令,-P指定環境,即可實現預期目的。

以上就是在傳統java開發模式中,如何使用maven進行多環境支援。希望還在查詢相關資料的朋友有所收穫。避免人工打包的原始方式,歡迎各位朋友交流討論專案工程研發最佳實踐,共同提高效率。

圖片