基本每个项目都会有开发环境(本地环境)、开发集成环境、测试环境、预发布环境、正式环境。
最少也有开发环境(本地环境)、测试环境、生产环境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>

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