Maven在傳統Spring專案中支援多環境打包
阿新 • • 發佈:2021-01-31
本文以單體架構為例,技術體系採用單純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 -Pdev
mvncleanpackage-Ptest
通過執行maven的package打包命令,-P指定環境,即可實現預期目的。
以上就是在傳統java開發模式中,如何使用maven進行多環境支援。希望還在查詢相關資料的朋友有所收穫。避免人工打包的原始方式,歡迎各位朋友交流討論專案工程研發最佳實踐,共同提高效率。