Maven profile结合Maven AntRun Plugin实现不同环境配置文件分离打包
2016-05-05 23:56
851 查看
在Java项目中通常会有各种配置文件,例如有xml、properties。在不同的环境下配置文件的内容可能会不一样,例如正式环境、测试环境、开发环境连的不是同一个数据库,访问的接口不一样,或者日志的级别不同。如果每次部署不同环境时都要改配置文件的各种配置是非常麻烦的。在这种情况下,可以将这些配置文为每个环境复制一个,分别配置不同的内容,打包部署时不同环境的包中打入对应的配置文件。下面是一个通过Maven的profile结合Maven AntRun Plugin实现的方案。
上面的配置中加入了id为product、test两个profile,分别表示正式环境和测试环境,两块的配置基本相同,只看其中之一即可。其中profile的id可以自定义,如果除了这两个环境外还有其他环境的话可以自行添加。
在每个profile中使用了maven-antrun-plugin插件,
在src/main/resources目录下新建distribute/product和distribute/test目录,将跟环境相关的配置文件复制到这两个目录中,根据环境修改配置文件内容。完成后目录结构如下:
pom.xml配置
在Maven项目的pom.xml中加入以下配置:<profiles> <profile> <id>product</id> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>compile</phase> <configuration> <target> <copy todir="${basedir}/target/classes/" overwrite="true"> <fileset dir="${basedir}/src/main/resources/distribute/product/" /> </copy> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>test</id> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>compile</phase> <configuration> <target> <copy todir="${basedir}/target/classes/" overwrite="true"> <fileset dir="${basedir}/src/main/resources/distribute/test/" /> </copy> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
上面的配置中加入了id为product、test两个profile,分别表示正式环境和测试环境,两块的配置基本相同,只看其中之一即可。其中profile的id可以自定义,如果除了这两个环境外还有其他环境的话可以自行添加。
在每个profile中使用了maven-antrun-plugin插件,
<phase>compile</phase>表示在编译阶段,
<target>...</target>表示要执行的任务。即在编译是将
dir="${basedir}/src/main/resources/distribute/product/"目录下的文件拷贝到
todir="${basedir}/target/classes/"目录中,
overwrite="true"表示如果文件重复则覆盖。
不同环境的配置文件位置
如果项目中有配置文件,一般是放在src/main/resources目录下:在src/main/resources目录下新建distribute/product和distribute/test目录,将跟环境相关的配置文件复制到这两个目录中,根据环境修改配置文件内容。完成后目录结构如下:
打包
Maven打包使用mvn package命令,如果是打不同环境的包,可以加上参数
-P加上profile的id,例如正式环境可以通过
mvn package -P product来打包,测试环境可以通过
mvn package -P test来打包,此时就会执行profile中配置的maven-antrun-plugin插件,完成配置文件的拷贝和覆盖,最终打出来的包中的配置文件是这个环境对应的配置。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- maven学习
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序