摘自:http://doc.okbase.net/bjhecwq/archive/118121.html

maven有许多优秀的插件,最近在研究打包中替换多重环境的配置,同事介绍使用阿里的auto-config,使用了一下确实不错。
auto-config其实和ant时代的字符替换差不多太多,只是ant需要自己写脚本完成这些事情,但是auto-config通过配置就可以了。
auto-config的核心技术我个人认为是volicty的模板技术,包括里面的占位符oplacehold都是以${}volicty的语法定义的。
auto-config主要涉及的文件有以下部分:auto-config.xml,template.vm,antx.property.
auto-config.xml主要定义那些字符需要替换,他们的默认值是什么,那 些文件需要替换占位符,以及输出的文件。
template.vm 主要定义模板文件,其实就是我们需要的配置文件,只不过这里需要替换的符号都以占位符的形 式输出。
antx.property 定义了占位符中 的具体的值用于替换占位符的值。
如果使用auto-config:
1.安装maven
2.使用auto-config的插件,需要在pom.xml中plugin中插入,后续会详细介绍,这里有必要说一下大陆的长城防火墙,太厉害了,maven中央仓库下载一个jar包需要半个小时,这里可以再maven的setting文件的mirrors增加如下配置:、

nexus-osc
external:*
Nexus osc
http://maven.oschina.net/content/groups/public/

表示从oschina这个站下载所有的maven文件。
pom.xml增加auto-config的配置

json

com.alibaba.citrus.tool
autoconfig-maven-plugin
1.2

${user.dir}/${autoconfig.properties}

package

autoconfig

这里的配置也是网络上download下来的,我手动添加了一个配置

${user.dir}/${autoconfig.properties}

这个用来干嘛的呢?用于自定义antx.property的文件位置,为什么要自定义文件位置?原因是方便在多环境中指定参数来修改配置。
这里user.dir是当前工程的路径,autoconfig默认的文件位置是在user.home目录下的。

这里说了,在多环境需要修改配置,所以需要在pom.xml中配置多个环境的profile

dev

antx-dev.properties

deploy

antx-pro.properties

dev

antx-dev.properties

pro

antx-pro.properties

在实际的编译过程中只需要 mavn package -P dev或者 mavn package -P pro就可以打包生产或者开发下的包了
pom.xml定义好了之后,需要在WEB-INF目录下面增加一个META-INF的文件夹以及在该文件夹下新增autoconf文件夹
在autoconf文件夹下放置auto-config.xml以及所有的模板文件,注意模板文件必须放在这里,我目前没有找到放到其他位置的配置。

auto-config的具体配置:

这里property定义的名字都是占位符的名字,defaultvalue是默认值
script下面定义的具体的模板,以及输出的文件。

web.vm是模板文件定义了,也就是我们的配置文件,变量通过占位符分割

antx.property是具体配置的落地,可以有多个,通过mvn -p 制定具体的配置文件
petstore.work=1
petstore.loggingRoot=2
petstore.upload=3
petstore.loggingLevel=4
如果没有在pom。xml 通过configuration配置默认的antx.properties是在项目的根目录下,或者在user.home下的,如果没有autoconfig需要你创建。

通过修改四个文件基本上就可以使用auto-config了,打包后的文件已经将占位符修改成我们需要的值了,这个是多环境打包的神器。

原文链接:http://blog.csdn.net/bjhecwq/article/details/41855973

maven auto-config 多环境自动打包的更多相关文章

  1. Maven配置jar(war)包自动打包上传Maven服务器的配置

    Maven配置jar(war)包自动打包上传Maven服务器的配置 创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionMa ...

  2. [maven] 项目不同环境自动打包

    应用背景 项目需要发布到本地环境,测试环境和生产环境甚至不同的生产环境上.这时候配置文件的一些参数需要被频繁的修改来修改去.为了解决这样的繁琐工作,就得使用maven profile特性. 步骤 1. ...

  3. Maven适配多种运行环境的打包方案

    项目从开发到部署会历经多个运行环境,如开发环境.测试环境和生产环境,不同环境中项目的配置文件通常也会不同,典型的如数据库连接配置.我们当然不希望每次部署打包前都去修改配置文件以适配环境,利用Maven ...

  4. Maven + Spring 进行多环境自动切换功能

    在pom.xml的<project></project>的最下放写入如下代码: <!-- profiles setting start [mvn install -P x ...

  5. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  6. 基于jenkins自动打包并部署Tomcat环境

    传统网站部署的流程 在运维过程中,网站部署是运维的工作之一.传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确 ...

  7. Maven 整合 spring profile实现多环境自动切换

    Maven 整合 spring profile实现多环境自动切换 时间:2014-03-19 15:32来源:Internet 作者:Internet 点击:525次 profile主要用在项目多环境 ...

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

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

  9. Linux下Maven+SVN自动打包脚本

        公司的开发环境每次部署项目都很麻烦,需要手动打包并上传上去.这个太麻烦了,所以就准备搞个自动打包的脚本.脚本自动从svn代码库里面更新最新的代码下来,然后maven打包,最后把war包丢到to ...

随机推荐

  1. NeHe OpenGL教程 第三十三课:TGA文件

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. c#(特殊集合)

    Stack集合(先进后出) Stack ss = new Stack();//初始化 ss.Push(1);//.Push()一个一个推进,赋值ss.Push(2);ss.Push(3);ss.Pus ...

  3. make[1]: *** [pcrecpp.lo] 错误 1

    在安装:pcre-8.30 时,报如下错误: [root@localhost pcre-8.30]# make && make installmake  all-ammake[1]: ...

  4. 如何动态添加和删除一个div

    代码实例如下: <!DOCTYPE html><html><head><meta charset="utf-8"><meta ...

  5. jQuery实现的鼠标滑过切换图片代码实例

    jQuery实现的鼠标滑过切换图片代码实例:有时候网页需要这样的简单效果,那就是当鼠标滑过默认图片的时候,能够实现图片的切换,可能在实际应用中,往往没有这么简单,不过大家可以自行扩展一下,下面简单介绍 ...

  6. Wix安装包权限问题

    Wix在安装完成之后,如果遇到非管理员用户(域用户或Win7+系统,UAC权限问题等),修改配置文件(setting.ini)文件时,会遇到文件权限为只读,无法修改问题: 解决方案有两种: 首先添加U ...

  7. C#多字符分割

    string demo = "0 1 2 3";string[] result = demo.Split(" ,,".ToCharArray());试试,中间的 ...

  8. android 插件化 模块化开发

    http://blog.csdn.net/o1587790525/article/details/11891997 Android 插件化架构设计  http://www.iqiyi.com/w_19 ...

  9. SqlServer中的更新锁(UPDLOCK)

    UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改.当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加 ...

  10. Oracle中常用操作

    查看表中的字段名和类型 SELECT column_name,DATA_TYPE FROM cols WHERE TABLE_NAME=upper('tableName') ORDER BY COLU ...