一概述
开发测试环境多,我头一次看这项目的时候一脸懵逼,这么多环境啊。每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如果每个环境build前手动修改这些参数,那就太麻烦了。还是以前的小项目简单,上线前改好打个包就行了。还是习惯ant那种方式。好吧,话说maven也提供了profile这种方式更好的解决。
二配置:
要在pom.xml配置不同的环境变量。如下所示:
<!-- 配置不同环境的配置文件 -->
<profiles>
<!-- 可扩展beta,prod环境 -->
<!-- add by jfqiao -->
<profile>
<id>env_betaa</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/betaa</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_betab</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/betab</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_betac</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/betac</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_dev</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/dev</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_interface</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/interface</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_mirror</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/mirror</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_prod</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/prod</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_rd</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/rd</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_stable</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/stable</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>env_alprod</id>
<build>
<resources>
<resource>
<directory>src/main/resources-env/alprod</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
resource节点是关键,它表明了哪个目录下的配置文件。参见截图:
参见上图,各属性节点的值,用占位符"${属性名}"占位,maven在package时,会根据profile的环境自动替换这些占位符为实际属性值。
打包时,指定环境就可以了。比如:
maven package -P dev
将自动打包成dev环境的部署包(注:参数P为大写)