一、maven根据不同的environment打包配
一个项目里总会有很多配置文件。而且一般都会有多套环境。开发的、测试的、正式的。而在这些不同的环境这些配置的值都会不一样。
比如mail的配置、服务的url配置这些都是很常见的。
所以在打包的时候就要根据environment来选不同的值或者配置文件。
比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。
|-- resources
| |-- dev
| |-- test
| |-- pro
在pom.xml里定义一个打包用的profile变量
1 <!-- 开发 --> 2 <profile> 3 <id>dev</id> 4 <properties> 5 <package.environment>dev</package.environment> 6 </properties> 7 </profile> 8 <!-- 测试 --> 9 <profile> 10 <id>test</id> 11 <properties> 12 <package.environment>test</package.environment> 13 </properties> 14 </profile> 15 <!-- 生产 --> 16 <profile> 17 <id>pro</id> 18 <properties> 19 <package.environment>pro</package.environment> 20 </properties> 21 </profile>
pom.xml引用profile变量
1 <plugin> 2 <artifactId>maven-war-plugin</artifactId> 3 <version>3.0.0</version> 4 <configuration> 5 <warSourceDirectory>src/main/webapp</warSourceDirectory> 6 <archive> 7 <addMavenDescriptor>false</addMavenDescriptor> 8 </archive> 9 <!--<warName>app</warName>--> 10 <webResources> 11 <resource> 12 <directory>src/main/resources/config/${package.environment}</directory> 13 <targetPath>WEB-INF/classes/config</targetPath> 14 <filtering>true</filtering> 15 </resource> 16 </webResources> 17 </configuration> 18</plugin>
org.apache.maven.plugins插件<webResources>动态指定参数${package.environment}对应文件夹下的文件到WEB-INF/classes下
注意:参数<filtering>true</filtering>,一定要设置成true这样才会用对应environment目录下的配置文件覆盖原来的
二、结合idea打包命令
1.本地开发打包命令
clean package -DskipTests -Pdev
2.生产环境打包命令
clean package -DskipTests -Ppro