一个项目里总会有很多配置文件。而且一般都会有多套环境。开发的、测试的、正式的。而在这些不同的环境这些配置的值都会不一样。比如mail的配置、服务的url配置这些都是很常见的。所以在打包的时候就要根据environment来选不同的值或者配置文件。

比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。

|-- resources
| |-- dev
| |-- product
| |-- qa
| `-- qa53

以前用ant的时候打包的时候处理就比较方便。打包前copy一下对应目录下的配置文件覆盖target下的那些文件再打包就可以了。在刚开始用maven的时候就想要怎么解决,一直没有找到ant的这种方式的可行的办法。其实主要是按ant这种处理方法去思考了。只去想没有有cp这种target。其实在maven里用profile就可以解决了。对于不同的environment定义不同的profile就ok了,目录结构还是沿用原来的就可以。

在pom.xml里定义一个变量

    <properties>
......
<package.environment>qa53</package.environment>
</properties>

这里定义的值是经常打包的一个profile,方便少敲点代码。然后定义一些profile

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

最后再修改一下打包的plugin,引用这个变量。

            <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<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目录下的配置文件覆盖原来的。ok。mvn package的时候就会用默认的qa53目录下的配置文件。如果要发布正式环境的包就运行。mvn -Pproduct package

maven里如何根据不同的environment打包的更多相关文章

  1. maven根据不同的运行环境,打包不同的配置文件

    使用maven管理项目中的依赖,非常的方便.同时利用maven内置的各种插件,在命令行模式下完成打包.部署等操作,可方便后期的持续集成使用. 但是每一个maven工程(比如web项目),开发人员在开发 ...

  2. maven根据不同的运行环境,打包不同的配置文件(转载)

    使用maven管理项目中的依赖,非常的方便.同时利用maven内置的各种插件,在命令行模式下完成打包.部署等操作,可方便后期的持续集成使用. 但是每一个maven工程(比如web项目),开发人员在开发 ...

  3. coding++:maven根据不同的运行环境,打包不同的配置文件

    1.使用maven管理项目中的依赖,非常的方便.同时利用maven内置的各种插件,在命令行模式下完成打包.部署等操作,可方便后期的持续集成使用. 2.但是每一个maven工程(比如web项目),开发人 ...

  4. 使用maven profile实现多环境配置相关打包

    项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run con ...

  5. 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包

    参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架:src/main/java(javaz主代码)src/test ...

  6. Maven之——使用本地jar包并打包进war包里面的方法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52594602 很显然,这种方法是很不可取的,因为Maven是用来团队合作,以及发布 ...

  7. myeclipse使用maven插件进行maven install时报错check $m2_home environment variable and mvn script match

    check $m2_home environment variable and mvn script match 分类: maven2015-09-01 18:06 842人阅读 评论(0) 收藏 举 ...

  8. 【转】Maven实战(三)---插件动态打包

    原博文出于:http://blog.csdn.net/liutengteng130/article/details/41622013    感谢! maven把项目的构建划分为不同的生命周期(life ...

  9. Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)

    下载hudson ,安装部署http://hudson-ci.org/ 将下载的hudson-3.3.3.war放到tomcat的webapps目录下并启动tomcat,输入地址访问 点击Instal ...

随机推荐

  1. Mat结构

    主要是记录一下大牛的博客,再次感谢这些无私的博主. 这篇博客http://blog.csdn.net/yang_xian521/article/details/7107786中,我觉得要注意的是Mat ...

  2. Mget is available.

    Table of Contents 1. Introduction 2. Use tmget in gentoo 3. About MTU 1 Introduction MulityGet to sp ...

  3. 虚拟机的安装以及Linux的学习

    安装虚拟机 对虚拟机的认识 其实初中的时候我就听说过虚拟机这个名词,当时的我还小,也不知道虚拟机是个什么东西,那时我傻傻的认为虚拟机只不过是电脑中的一个虚拟的计算机,没有什么实在的作用.后来随着大学课 ...

  4. html meta标签使用总结(转)

    之前学习前端中,对meta标签的了解仅仅只是这一句. <meta charset="UTF-8"> 但是打开任意的网站,其head标签内都有一列的meta标签.比如我博 ...

  5. day9作业

    题目:简单主机批量管理工具 需求: 1.主机分组: 2.登录后显示主机分组,选择分组后查看主机列表: 3.可批量执行命令.发送文件,结果实时返回: 4.主机用户名密码可以不同.

  6. jquery图片延迟加载方案解决图片太多加载缓慢问题

    当在做一个图片展示站的时候,一个页面加载的图片过多会,如果服务器的带宽跟不上,明显会感觉到页面很卡,严重的浏览器也会崩溃,所以我推荐采用即看即所得的模式,当滚动到下一屏时才进行加载图片. 注意:即便如 ...

  7. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fhcq-oa' did not find a matching property.

    当你在使用Eclipse运行web项目时,你可能会看到控制台出现: 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Settin ...

  8. Linux查看使用端口的进程

    netstat –apn | grep 8080 lsof -i:8080

  9. Xposed模块开发教程

    转:http://vbill.github.io/2015/02/10/xposed-1/     http://blog.csdn.net/zhangmiaoping23/article/detai ...

  10. PHP学习日记 Windows配置PHP+Nginx+自动化脚本

    Windows配置PHP+Nginx+自动化脚本 安装与配置 PHP 下载PHP:传送门 选择合适的版本下载 尽量选Thread Safe 配置PHP: 解压后在文件夹中找到php.ini-devel ...