基本每个项目都会有开发环境(本地环境)、开发集成环境、测试环境、预发布环境、正式环境。
最少也有开发环境(本地环境)、测试环境、生产环境3个环境,每个环境的配置是不一样的,如果每次打包都手动修改配置文件,工作量大且容易出错。
所以这个时候就可以考虑使用maven的profiles来实现多环境配置的打包。
<profiles>
<profile>
<!-- 本地开发环境 -->
<id>dev</id>
<properties>
<profiles.active>development</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<!-- 生产环境 -->
<id>prd</id>
<properties>
<profiles.active>production</profiles.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
<build>
<finalName>hhly-common-${project.version}-${profiles.active}</finalName> <!--最终生成的文件名-->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 资源根目录排除各环境的配置,使用单独的资源目录来指定 -->
<excludes>
<exclude>test/*</exclude>
<exclude>production/*</exclude>
<exclude>development/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/${profiles.active}</directory>
</resource>
</resources>
<plugins>
<plugin>
<!-- 编译插件 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<!--<outputDirectory>/target/classes</outputDirectory>
<testOutputDirectory>/target/test-classes</testOutputDirectory>-->
</build>
如上,默认开发环境的profile是active的,也就是你执行mvn:compile,mvn:install,mvn:package等都是使用的开发环境的配置文件。
如果要打其他环境,比如测试环境的包,可以这样mvn package -P test.
注意:每次打包前建议先执行clean,否则会使用之前打包的配置文件。mvn clean package -P test.
那如果要自动部署到tomcat,可以增加一个plugin.
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<charset>utf-8</charset>
<url>${deploy.url}</url>
<server>tomcat</server>
<path>${webname}</path>
<username>admin</username>
<password>tomcat</password>
<update>true</update>
</configuration>
</plugin>
profile这样配置:
<profile>
<!-- 本地开发环境 -->
<id>development</id>
<properties>
<profiles.active>development</profiles.active>
<deploy.url>http://localhost:8080/manager/text</deploy.url>
<webname>/basketball_manage</webname>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>