还是根据我以前的思路:
src/main目录下原来有 java, resources, 我新建几个目录: resources-dev, resources-test, resources-prod.
resources --- 一些共享的配置文件, 一般不需要修改的
resources-dev --- 开发环境下用的配置文件, 和resources目录下文件没有重合.
resources-prod --- 生产环境下用的配置文件, 和resources目录下文件没有重合.
本机开发的时候设置源码目录为 java, resources, resources-dev, 可以直接开发调试.
编译的时候希望maven根据不同环境, 打包不同的目录下的文件, 我们利用maven的profile和build-helper-maven-plugin插件就可以实现.
(文章后面有简化版本)
自己根据实际的部署环境修改吧, 运行 mvn package -P test 就可以打包了.
反正很简单啦. 一大堆xml, 有用的没几句....太罗嗦了
另:目前开发用resin, intellij idea 9, 调试时webapp在开发目录webapp下就地开发, 所以我的maven脚本还有如下部分:
这部分是公用的, 当然dev时候也不用打包.... 所以........ 可以用于本机开发, 打包到test, production等环境.
总之部署上maven不如ant灵活, ant写一套脚本一般来说也很少修改了.... 想改特容易. maven想复制个目录都要想法....
______________________________________________
简化后的版本:
src/main目录下原来有 java, resources, 我新建几个目录: resources-dev, resources-test, resources-prod.
resources --- 一些共享的配置文件, 一般不需要修改的
resources-dev --- 开发环境下用的配置文件, 和resources目录下文件没有重合.
resources-prod --- 生产环境下用的配置文件, 和resources目录下文件没有重合.
本机开发的时候设置源码目录为 java, resources, resources-dev, 可以直接开发调试.
编译的时候希望maven根据不同环境, 打包不同的目录下的文件, 我们利用maven的profile和build-helper-maven-plugin插件就可以实现.
<
profiles
>
< profile >
< id >dev </ id >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo </ groupId >
< artifactId >build-helper-maven-plugin </ artifactId >
< version >1.5 </ version >
< executions >
< execution >
< id >add-resource </ id >
< phase >generate-resources </ phase >
< goals >
< goal >add-resource </ goal >
</ goals >
< configuration >
< resources >
< resource >
< directory >src/main/resources_dev </ directory >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< artifactId >maven-war-plugin </ artifactId >
< executions >
< execution >
< phase >package </ phase >
< goals >
< goal >war </ goal >
</ goals >
< configuration >
< classifier >dev </ classifier >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
</ profile >
< profile >
< id >test </ id >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo </ groupId >
< artifactId >build-helper-maven-plugin </ artifactId >
< version >1.5 </ version >
< executions >
< execution >
< id >add-resource </ id >
< phase >generate-resources </ phase >
< goals >
< goal >add-resource </ goal >
</ goals >
< configuration >
< resources >
< resource >
< directory >src/main/resources_test </ directory >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins </ groupId >
< artifactId >maven-war-plugin </ artifactId >
< executions >
< execution >
< phase >package </ phase >
< goals >
< goal >war </ goal >
</ goals >
< configuration >
< classifier >test </ classifier >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
</ profile >
</ profiles >
< profile >
< id >dev </ id >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo </ groupId >
< artifactId >build-helper-maven-plugin </ artifactId >
< version >1.5 </ version >
< executions >
< execution >
< id >add-resource </ id >
< phase >generate-resources </ phase >
< goals >
< goal >add-resource </ goal >
</ goals >
< configuration >
< resources >
< resource >
< directory >src/main/resources_dev </ directory >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< artifactId >maven-war-plugin </ artifactId >
< executions >
< execution >
< phase >package </ phase >
< goals >
< goal >war </ goal >
</ goals >
< configuration >
< classifier >dev </ classifier >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
</ profile >
< profile >
< id >test </ id >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo </ groupId >
< artifactId >build-helper-maven-plugin </ artifactId >
< version >1.5 </ version >
< executions >
< execution >
< id >add-resource </ id >
< phase >generate-resources </ phase >
< goals >
< goal >add-resource </ goal >
</ goals >
< configuration >
< resources >
< resource >
< directory >src/main/resources_test </ directory >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins </ groupId >
< artifactId >maven-war-plugin </ artifactId >
< executions >
< execution >
< phase >package </ phase >
< goals >
< goal >war </ goal >
</ goals >
< configuration >
< classifier >test </ classifier >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
</ profile >
</ profiles >
(文章后面有简化版本)
自己根据实际的部署环境修改吧, 运行 mvn package -P test 就可以打包了.
反正很简单啦. 一大堆xml, 有用的没几句....太罗嗦了
另:目前开发用resin, intellij idea 9, 调试时webapp在开发目录webapp下就地开发, 所以我的maven脚本还有如下部分:
<
build
>
< plugins >
< plugin >
< groupId >org.apache.maven.plugins </ groupId >
< artifactId >maven-war-plugin </ artifactId >
< version >2.1 </ version >
< configuration >
< warSourceExcludes >WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/** </ warSourceExcludes >
< archive >
< addMavenDescriptor >false </ addMavenDescriptor >
</ archive >
</ configuration >
</ plugin >
</ plugins >
</ build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins </ groupId >
< artifactId >maven-war-plugin </ artifactId >
< version >2.1 </ version >
< configuration >
< warSourceExcludes >WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/** </ warSourceExcludes >
< archive >
< addMavenDescriptor >false </ addMavenDescriptor >
</ archive >
</ configuration >
</ plugin >
</ plugins >
</ build >
这部分是公用的, 当然dev时候也不用打包.... 所以........ 可以用于本机开发, 打包到test, production等环境.
总之部署上maven不如ant灵活, ant写一套脚本一般来说也很少修改了.... 想改特容易. maven想复制个目录都要想法....
______________________________________________
简化后的版本:
<
properties
>
< package .target >notexists </ package.target >
</ properties >
< profiles >
< profile >
< id >dev </ id >
< properties >
< package .target >dev </ package.target >
</ properties >
</ profile >
< profile >
< id >test </ id >
< properties >
< package .target >test </ package.target >
</ properties >
</ profile >
</ profiles >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo </ groupId >
< artifactId >build-helper-maven-plugin </ artifactId >
< version >1.5 </ version >
< executions >
< execution >
< id >add-resource </ id >
< phase >generate-resources </ phase >
< goals >
< goal >add-resource </ goal >
</ goals >
< configuration >
< resources >
< resource >
< directory >src/main/resources_${package.target} </ directory >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins </ groupId >
< artifactId >maven-war-plugin </ artifactId >
< version >2.1 </ version >
< configuration >
< warSourceExcludes >WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/** </ warSourceExcludes >
< archive >
< addMavenDescriptor >false </ addMavenDescriptor >
</ archive >
</ configuration >
< executions >
< execution >
< phase >package </ phase >
< goals >
< goal >war </ goal >
</ goals >
< configuration >
< classifier >${package.target} </ classifier >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >
< package .target >notexists </ package.target >
</ properties >
< profiles >
< profile >
< id >dev </ id >
< properties >
< package .target >dev </ package.target >
</ properties >
</ profile >
< profile >
< id >test </ id >
< properties >
< package .target >test </ package.target >
</ properties >
</ profile >
</ profiles >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo </ groupId >
< artifactId >build-helper-maven-plugin </ artifactId >
< version >1.5 </ version >
< executions >
< execution >
< id >add-resource </ id >
< phase >generate-resources </ phase >
< goals >
< goal >add-resource </ goal >
</ goals >
< configuration >
< resources >
< resource >
< directory >src/main/resources_${package.target} </ directory >
</ resource >
</ resources >
</ configuration >
</ execution >
</ executions >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins </ groupId >
< artifactId >maven-war-plugin </ artifactId >
< version >2.1 </ version >
< configuration >
< warSourceExcludes >WEB-INF/lib/**,WEB-INF/classes/**,WEB-INF/work/**,WEB-INF/tmp/** </ warSourceExcludes >
< archive >
< addMavenDescriptor >false </ addMavenDescriptor >
</ archive >
</ configuration >
< executions >
< execution >
< phase >package </ phase >
< goals >
< goal >war </ goal >
</ goals >
< configuration >
< classifier >${package.target} </ classifier >
</ configuration >
</ execution >
</ executions >
</ plugin >
</ plugins >
</ build >