maven pom profiles
Posted wei198621
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven pom profiles相关的知识,希望对你有一定的参考价值。
maven pom profiles
1、profiles是什么?有什么作用
在maven构建的项目都存在一个pom.xml的项目对象模型配置文件,用于约束项目(如:jar包管理、构建管理等)。profiles是pom.xml中的一个配置项。
我们在开发项目时一般都会区分线上环境和测试环境,这两个环境需要切换以适应不同的环境需求
正式环境的配置,一般放置于src/main/resources下,而测试环境放置于/src/test/resources下面。
profile的主要作用就是区分正式环境和测试环境的配置
2、如何配置
<profiles>
<profile>
<id>release</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</build>
</profile>
<profile>
<id>test</id>
<build>
<resources>
<resource>
<directory>src/test/resources</directory>
<includes>
<include>config/*.properties</include>
<include>log4j.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>log4j.xml</exclude>
</excludes>
</resource>
</resources>
</build>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
如上, 我配置了两个profile一个release用于正式环境发布,test用于测试环境使用;默认开启测试环境,activation->true
测试环境与正式环境只是部分的配置不同,我们需要公用这部分配置。这就使用到了includes and excludes,用引入和排除配置文件
3、区别构建发布包
构建测试包:
maven package -P test -Dmaven.test.skip=true
1
构建正式包:
maven package -P release -Dmaven.test.skip=true
其他示例
<!-- 定义配置文件 -->
<profiles>
<!-- 配置文件 id 名字 properties 参数 -->
<profile>
<id>dev</id>
<!--默认激活当前配置-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profiles.active>dev</profiles.active>
<!-- 众多参数配置 -->
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profiles.active>pro</profiles.active>
<!-- 众多参数配置 -->
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
<!-- 众多参数配置 -->
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<!-- 配置一个 resource directory 为对象目录
excludes->exclude build时排除
includes->include build时包含
-->
<resource>
<directory>src/main/resources/</directory>
<excludes>
<exclude>config/dev/*</exclude>
<exclude>config/pro/*</exclude>
<exclude>config/test/*</exclude>
</excludes>
<includes>
<!--如果有其他定义通用文件,需要包含进来-->
<include>views/*</include>
</includes>
</resource>
<resource>
<!--这里是关键! 根据不同的环境,把对应文件夹里的配置文件打包-->
<directory>src/main/resources/config/${profiles.active}</directory>
</resource>
</resources>
</build>
以上是关于maven pom profiles的主要内容,如果未能解决你的问题,请参考以下文章
一种更好的方式设置maven pom 缺省激活的 profile