使用Maven多环境配置打包和部署

基本每个项目都会有开发环境(本地环境)、开发集成环境、测试环境、预发布环境、正式环境。
最少也有开发环境(本地环境)、测试环境、生产环境3个环境,每个环境的配置是不一样的,如果每次打包都手动修改配置文件,工作量大且容易出错。
所以这个时候就可以考虑使用maven的profiles来实现多环境配置的打包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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这样配置:

1
2
3
4
5
6
7
8
9
10
11
12
<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>

<deploy.url>中后面的/manager/text不能变,端口就看你打开了哪个tomcat。
执行mvn tomcat7:deploy 或者mvn tomcat7:redeploy部署到tomcat。
注意:执行部署命令前要将tomcat打开,这样就会将工程自动部署到tomcat。如上其他环境也一样,比如测试环境的tomcat,你在开发环境也是可以自动部署过去的。

Donny wechat
欢迎关注我的个人公众号
打赏,是超越赞的一种表达。
Show comments from Gitment