Maven中怎么根据不同环境打包不同配置文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
蜀山网站建设公司创新互联,蜀山网站设计制作,有大型网站制作公司丰富经验。已为蜀山上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的蜀山做网站的公司定做!
首先贴出整个pom文件:
4.0.0 CMS CMS war 0.0.1-SNAPSHOT Cms http://maven.apache.org 4.1.6.RELEASE UTF-8 dev dev true test test prod prod Cms src maven-compiler-plugin 3.3 1.7 org.apache.maven.plugins maven-war-plugin 2.1.1 WebRoot\WEB-INF\web.xml WebRoot false Cms src/main/resoreces/${package.environment} WEB-INF/classes true src true **/*.properties **/*.xml
简单说明几个地方:
dev dev true test test prod prod
此处借助profiles定义几个不同的环境文件夹,相同的需要在项目里面创建同id的文件夹,用来存放特定环境的配置文件。
我之前的resource目录:
我的目录结构是相对复杂的一种有2层目录,只有一层目录的也一样更简单。外层xml文件,还有一个properties文件夹。这里我针对不同环境需要更改的配置文件有4个,标红的。
再看一下改造后resource的目录结构:
随便展开一个dev文件夹是这样:
可见需要更改的配置文件,需要copy到各个环境的文件夹当中去,而不需要更改的文件,则不需要复制一份。
此处需要说明的是,如果我指定的是dev,则maven会将dev下的所有文件拿出来,db.xml覆盖掉外面的db.xml,dev.properties文件夹中的配置文件会拿出来放到外面的properties文件夹中。所以说这里是非常灵活的,你需要哪些文件定制,完全由自己来控制。
再来看pom文件
org.apache.maven.plugins maven-war-plugin 2.1.1 WebRoot\WEB-INF\web.xml WebRoot false test src/main/resources/${package.environment} WEB-INF/classes true
这里使用的是
maven-war-plugin
这个插件,此插件的功能是很强大的,想深入了解,可以到官网去看。
${package.environment}
动态指定目录,接收参数。
targetPath
目标路径。
另外说2点,这两个标签
WebRoot\WEB-INF\web.xml WebRoot
1.如果maven打包错误说找不到web.xml,说明你得项目结构不是标准的,用webxml标签指定一下就可以了
2.如果jsp打包没有的话,同样的问题,指定一下目录,我的项目结构就不是maven标准结构,所以需要指定一下。
改造完毕,接下来就是利用maven打包了。
mvn clean ; mvn compile;
mvn -P test package; 传相应环境参数就ok了
关于Maven中怎么根据不同环境打包不同配置文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。