maven auto-config 多环境自动打包

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增加如下配置:、

<mirror>

<id>nexus-osc</id>

<mirrorOf>external:*</mirrorOf>

<name>Nexus osc</name>

<url>http://maven.oschina.net/content/groups/public/</url>

</mirror>

</mirrors>

表示从oschina这个站下载所有的maven文件。

pom.xml增加auto-config的配置

<build>

<finalName>json</finalName>

<plugins>

<plugin>

<groupId>com.alibaba.citrus.tool</groupId>

<artifactId>autoconfig-maven-plugin</artifactId>

<version>1.2</version>

<configuration>

<userProperties>${user.dir}/${autoconfig.properties}</userProperties>

</configuration>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>autoconfig</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

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

<configuration>

<userProperties>${user.dir}/${autoconfig.properties}</userProperties>

</configuration>

这个用来干嘛的呢?用于自定义antx.property的文件位置,为什么要自定义文件位置?原因是方便在多环境中指定参数来修改配置。

这里user.dir是当前工程的路径,autoconfig默认的文件位置是在user.home目录下的。

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

<profiles>

<profile>

<id>dev</id>

<properties>

<autoconfig.properties>antx-dev.properties</autoconfig.properties>

</properties>

</profile>

<profile>

<id>deploy</id>

<properties>

<autoconfig.properties>antx-pro.properties</autoconfig.properties>

</properties>

</profile>

</profiles>

<profiles>

<profile>

<id>dev</id>

<properties>

<autoconfig.properties>antx-dev.properties</autoconfig.properties>

</properties>

</profile>

<profile>

<id>pro</id>

<properties>

<autoconfig.properties>antx-pro.properties</autoconfig.properties>

</properties>

</profile>

</profiles>

在实际的编译过程中只需要 mavn package -P dev或者 mavn package -P pro就可以打包生产或者开发下的包了

pom.xml定义好了之后,需要在WEB-INF目录下面增加一个META-INF的文件夹以及在该文件夹下新增autoconf文件夹

在autoconf文件夹下放置auto-config.xml以及所有的模板文件,注意模板文件必须放在这里,我目前没有找到放到其他位置的配置。

auto-config的具体配置:

<?xml version="1.0" encoding="UTF-8"?>

<config>

<group>

<property name="petstore.work" description="应用程序的工作目录" />

<property name="petstore.loggingRoot" defaultValue="${petstore.work}/logs"

description="日志文件目录" required="true"/>

<property name="petstore.upload" defaultValue="${petstore.work}/upload"

description="上传文件的目录" />

<property name="petstore.loggingLevel" defaultValue="warn"

description="日志文件级别">

</property>

</group>

<script>

<generate template="web.vm" destfile="WEB-INF/classes/spring-web.xml" charset="UTF-8"/>

</script>

</config>

这里property定义的名字都是占位符的名字,defaultvalue是默认值

script下面定义的具体的模板,以及输出的文件。

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

<?xml version="1.0" encoding="UTF-8"?>

<config>

<property name=${petstore.work}></property>

<property name=${petstore.loggingRoot}></property>

<property name=${petstore.upload}></property>

<property name=${petstore.loggingLevel}></property>

</config>

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了,打包后的文件已经将占位符修改成我们需要的值了,这个是多环境打包的神器。

时间: 2024-10-11 21:35:03

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

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

在pom.xml的<project></project>的最下放写入如下代码: <!-- profiles setting start [mvn install -P xxx ] 1:development 2:test 3: production --> <profiles> <profile> <id>development</id> <activation> <activeByDefault>

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

创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionManagement> <repository> <id>nexus-releases</id> <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url> </repository> <snapshotReposit

Docker环境搭建Jenkins+gitlab+maven自动打包 部署容器

宿主机安装docker(省略) 宿主机安装maven 下载二进制包解压到/var/docker_data/jenkins/jenkins_home下面 https://maven.apache.org/download.cgi Jenkins镜像安装 下载Jenkins镜像(一般都是Ubuntu版) FROM jenkins USER root #清除了基础镜像设置的源,切换成腾讯云的jessie源 #使用非腾讯云环境的需要将 tencentyun 改为 aliyun RUN echo '' >

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

项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run configuration,输入上述命令. PS:eclipse maven install和maven packege的区别在于前者除了打包到target外,还会install到本地仓库,这样其他引用的工程就可直接使用. 其中"dev"为环境的变量id, 可以自己定义, 我定义的名称为:dev

用jenkins搭建android自动打包环境

这里假设你已经搭建了jenkins的环境.否则,请阅读我的另一篇文章: http://my.oschina.net/u/930967/blog/298980 其实那个文章里面有用的就两句话的事儿,还是直接写在这里吧 jenkins是一个java web项目,可以去官网下载war包,放在tomcat的webapps下就能运行. 访问localhost:8080/jenkins进入 步入正题 任何一个开发工具,都提供了命令行工具.比如android用的是ant.java有maven.还有xcode,

【转】maven profile实现多环境打包

作为一名程序员,在开发的过程中,经常需要面对不同的运行环境(开发环境.测试环境.生产环境.内网环境.外网环境等等),在不同的环境中,相关的配置一般不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置.每次在不同环境部署程序时,都需要修改相应的配置文件,使之完成环境的配置.这么做存在一个比较大的问题:每次修改配置非常麻烦,而且配置错误会产生不可预估的影响,比如,在发布生产环境时用的开发环境的配置还好,但如果在开发环境下用生产环境的数据,将会造成生产数据的污染,导致生产环境崩溃.

批处理脚本结合Maven制作的自动打包工具

这里只是针对我现在的工程结构编写的 @echo off title 自动打包工具[玄玉制作] color 02 set project=%~n0 set curdir=%~dp0 set partition=%curdir:~0,1% cd %curdir:~0,20% REM 此文件需保存为ANSI编码,方可在Windows下执行 REM rem------------表示行注释,相当于Java中的// REM @echo off------表示关闭回显,即不显示本行即下面的命令行(默认DOS

Maven根据不同的环境打包不同的配置

前言: 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置等等. 那么就需要借助maven提供的profile功能,通过不同的环境激活不同的profile来实现"maven根据不同的运行环境,打包不同的配置文件"的目的. 一.原理 利用filter实现对资源文件(resouces)过滤 maven filter可利用指定的xxx.properties中对应的key=value对资

jenkins+gitlab+maven+tomcat持续集成环境安装配置

jenkins+gitlab+maven+tomcat,该环境主要实现自动构建部署java web应用. 其工作流程是:提交代码到gitlab--jenkins触发构建任务--maven编译打包--jenkins将war包部署到tomcat. 安装JDK #安装jdk1.8 tar zxvf jdk-8u77-linux-x64.gz #设置环境变量 #vi /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_77 export JAVA_BIN=