比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。第三个是测试环境,第四个是三个环境的共同配置。
|-- resources | |-- dev | |-- product | |-- qa | `-- public
对于不同的environment定义不同的profile就ok了,目录结构还是沿用原来的就可以。
在pom.xml里定义一个变量
<properties> ...... <package.environment>dev</package.environment> </properties>
这里定义的值是经常打包的一个profile,方便少敲点代码。然后定义一些profile
<profiles> <profile> <id>product</id> <properties> <package.environment>product</package.environment> </properties> </profile> <profile> <id>dev</id> <properties> <package.environment>dev</package.environment> </properties> </profile> <profile> <id>qa</id> <properties> <package.environment>qa</package.environment> </properties> </profile> </profiles>
最后再修改一下打包的plugin,引用这个变量。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <archive> <addMavenDescriptor>false</addMavenDescriptor> </archive> <webResources> <resource> <!-- this is relative to the pom.xml directory --> <directory>src/main/resources/${package.environment}</directory> <targetPath>WEB-INF/classes</targetPath> <filtering>true</filtering> </resource>
<resource>
<directory>src/main/resources/public</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
</webResources> </configuration> </plugin>
这里注意一个参数<filtering>true</filtering>
,一定要设置成true这样才会用对应environment目录下的配置文件覆盖原来的。ok。mvn package的时候就会用默认的dev目录下的配置文件。如果要发布正式环境的包就运行。mvn -Pproduct package