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
采用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
相关文章推荐
- Maven 结合 Spring profile对不同的部署环境打包部署
- maven集成eclipse根据resources profiles filtering进行不同环境打包部署
- Maven 对不同的部署环境打包
- Maven针对不同的环境使用Profile完成打包部署
- [置顶] Maven插件之portable-config-maven-plugin(不同环境打包)
- maven如何为不同的环境打包-开发、测试、生产环境
- 使用maven为不同环境打包资源文件
- maven在不同环境下的打包配置问题
- maven根据不同环境打包不同的配置
- Maven为不同环境配置打包
- Maven 使用profiles filters resources build 打包不同配置开发环境及打包
- Maven根据不同个环境打包, 获取不同的配置文件
- Jenkins的maven工程打包的时候怎么指定不同环境的配置文件
- Maven 如何为不同的环境打包 —— 开发、测试和生产环境
- maven利用Profile构建不同环境的部署包
- maven学习(下)利用Profile构建不同环境的部署包
- eclipse使用profile完成不同环境的maven打包功能
- Maven为本地、测试、生产等不同的环境打包
- 利用maven的Profile构建不同环境的部署包,选择不同properties构建不同的环境
- Maven利用Profile构建不同环境的部署包