您的位置:首页 > 编程语言 > Java开发

【小平工作日志】Maven根据不同环境打包, 获取不同的配置文件

2016-11-25 00:00 267 查看
摘要: 所写文章均经过测试而发布,一是为了记录笔记,一是为了为广大网友提供一份资料。欢迎广大网友提供宝贵的意见,请留言或私信沟通。

举例场景:

项目中测试与开发所使用的库,与产品上线使用的库不一样。数据库信息放在jdbc.properties中。

有一个很笨的方法就是每次打包前手动更改jdbc.properties中的地址信息,这种方法比较麻烦每次都需要改动,而且还容易出错等不利的地方。

所以我们需要在打包时,指定不同的jdbc.properties。

上pom.xml配置。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.***</groupId>
<artifactId>***项目artifactId***</artifactId>
<packaging>war</packaging>
<version>**</version>
<name>*******</name>
<url>http://maven.apache.org</url>

<dependencies>

<!-- 此处省略掉引用的jar包 -->

</dependencies>

<build>
<finalName>*****</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>env-dev/*</exclude>
<exclude>env-prod/*</exclude>
</excludes>
</resource>
</resources>
<plugins>
<!-- 打包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
<warName>*****</warName>
<webResources>
<resource>
<directory>src/main/resources/${package.environment}</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
<!-- 原型插件  -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
</plugin>
<!-- 设置源文件编码方 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 为了mvn install -Dmaven.test.skip=true 命令时过滤test -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- 解决资源文件的编码问 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<!-- 			<version>2.5</version> -->
<configuration>
<encoding>UTF-8</encoding>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>env-dev</id>
<properties>
<package.environment>env-dev</package.environment>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>env-prod</id>
<properties>
<package.environment>env-prod</package.environment>
</properties>
</profile>
</profiles>

</project>

注意:要在src/main/resource下新建env-dev(测试开发) 和 env-prod(正式上线) ,并分别在文件夹中放置各自己的文件。

到此就算是达到效果了。

打包时(cd .....项目pom所在目录):

测试与开发:mvn package

正式上线:mvn -P env-prod package

大功告成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Maven Java