一、前言
在Maven项目开发中,一般都会有四种环境情形:
1. 本地环境(Local)
2. 开发环境(Dev)
3. 测试环境(Beta)
4. 发布环境(Prod)
在不同环境中,总会遇到FTP服务器配置不一样,数据库配置不一样等一系列问题,这样Maven的环境隔离将有助于我们轻松切换不同配置环境。
二、maven环境隔离解决的实际问题
- 避免人工修改的弊端,即容易犯错
- 避免分环境打包、编译、部署
三、maven环境隔离的配置及原理
pom.xml中builder节点上增加如下配置
<resources>
<resource>
<directory>src/main/resources.${deploy.type}</directory>
<excludes>
<exclude>*.jsp</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
其中${deploy.type}对应下述配置节点中的deploy.type属性值。
接着在pom.xml中增加profiles节点
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<deploy.type>dev</deploy.type>
</properties>
</profile>
<profile>
<id>beta</id>
<properties>
<deploy.type>beta</deploy.type>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<deploy.type>prod</deploy.type>
</properties>
</profile>
</profiles>
其中activeByDefault是设置默认环境。
四、Maven环境隔离目录初始化
新建要隔离的文件夹,并把要隔离的文件分开,公共的留下,如下:
注意:文件夹的取名,对应上述pom.xml里新增节点resources中的resources. {deploy.type}文件名,${deploy.type}对应profile中的id值。
五、IDEA中设置默认环境
在IDEA右侧Maven Project选中本地开发环境对应的环境,点击import change进行更新:
单选一个环境,保证对应勾是实心的(因为有半选操作),多点或者半选可能造成环境错乱。
六、打包
参数是-P{环境标识符}
环境标识符对应profile节点上设置的id,也指${deploy.type} 。
命令:mvn clean package -Dmaven.test.skip=true -Pdev