在Spring STS中运用Maven对不同的部署环境打包

在Spring STS中使用Maven对不同的部署环境打包

 

Spring STS 默认集成了对 Maven 的支持,采用 Maven 管理依赖非常方便。

 

采用 STS 新建一个 Spring MVC 的项目,默认的目录结构如图:

在Spring STS中运用Maven对不同的部署环境打包

然后可以通过项目名称上点击右键, run 来执行 Maven 相关的命令:

在Spring STS中运用Maven对不同的部署环境打包

比如,执行 package maven 就自动把项目编译,跑一下单元测试,然后文件打包成 war 包。这是因为项目的结构都是采用的约定的方式进行的。直接查看 pom.xml 是看不到相关配置的。

 

现在的问题是,我们平时开发一般是在本机,提交 QA 测试会在测试环境,产品发布会在产品的正式部署环境。如何支持这样的打包方式?我们还是可以通过修改 pom.xml 来实现。

 

默认的 src/test/resources 我们可以放置一些各个环境都一致的配置文件。

然后新建: src/test/resources-dev , src/test/resources-product src/test/resources-qa ,分别对应开发 / 产品 / 测试环境。

 

接下来在 pom.xml 中增加 <properties> 的配置(配置 product 为默认的环境的打包)

<properties>

        … ...

       <package.environment>product</package.environment>

</properties>

 

然后在 properties 下面增加 profiles 的配置:

 

<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>
 

最后修改maven-war-plugin的配置:

 

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<configuration>

<warName>tiles</warName>

<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>

                    </webResources>

</configuration>

</plugin>
 

注意一个参数<filtering>true</filtering>,一定要设置成true这样才会用对应environment目录下的配置文件覆盖原来的。

现在需要运行打包命令, Run as -> Maven package

这样就会采用默认的 Product 的环境配置进行打包。

如果需要为测试环境的 qa 打包,点击: Run As -> Run Configurations

配置 Go als: clean package

Profiles:  qa

在Spring STS中运用Maven对不同的部署环境打包

然后就可以点击“ Run ”,这样就会成功为 qa 环境打好包。打好包的文件在 target 目录下面。

 

另外,本地开发的时候只需要把 resources-dev 目录加入到 Source 中就可以了。具体参考下图:

在Spring STS中运用Maven对不同的部署环境打包