您的位置:首页 > 编程语言 > Java开发

Maven_对不同的部署环境打包

2012-06-11 09:53 429 查看
Spring STS默认集成了对Maven的支持,采用Maven管理依赖非常方便。
 
采用STS新建一个Spring MVC的项目,默认的目录结构如图:



然后可以通过项目名称上点击右键,run来执行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为默认的环境的打包)

Xml代码  


<properties>  
  
        … ...  
  
       <package.environment>product</package.environment>  
  
</properties>  

 

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

Xml代码  


<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的配置:
 

Xml代码  


<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目录下的配置文件覆盖原来的。
现在需要运行打包命令,Runas -> Maven package
这样就会采用默认的Product的环境配置进行打包。
如果需要为测试环境的qa打包,点击:Run As-> Run Configurations
配置Goals: clean package
Profiles: 
qa



然后就可以点击“Run”,这样就会成功为qa环境打好包。打好包的文件在target目录下面。
 
另外,本地开发的时候只需要把resources-dev目录加入到Source中就可以了。具体参考下图:



来源:http://grantbb.iteye.com/blog/1287782
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息