文档章节

maven pom进阶教程 - profiles

超级大江
 超级大江
发布于 2017/01/31 21:02
字数 440
阅读 164
收藏 0

当需要根据不同的环境, 采用不同的依赖库、配置、插件, 可以使用profiles. 配置要点是activation激活条件,在以下几种情况下,profile将被激活:

  1. activeByDefault=true, 并且其它的profile都未被激活, 此时无视匹配条件, 保底作用, 保证必定有一个profile被激活
  2. activeByDefault=false, 并且activation下的所有条件都匹配, 如果activation下没有匹配条件, 则视为不匹配.
  3. mvn执行命令时, 加入-P <profileID>, 此时必定激活id为profileID的profile, 无视匹配条件

查看profile是否被激活, 使用命令 mvn help:active-profiles
条件匹配规则:
###jdk
测试jdk版本是否匹配, 也可以限定一个范围, 例如    <jdk>(1.6, 1.8]</jdk> 限制jdk的版本为1.7, 1.8
版本号范围的语法, 见http://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification
###os
操作系统是否匹配, 它又有4个子项, <arch><family><name><version>, 使用命令mvn -v可以查看当前操作系统的信息:

OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

当<os>下所列举出的条件都匹配时, <os>选项才算匹配
###property 判断java系统变量是否匹配, 包含-D定义的系统变量, 不包含在pom.xml中定义的properties, 也不包含环境变量.

	<profiles>
		<profile>
			<activation>
				<property>
					<name>debug</name>
					<value></value>
				</property>
			</activation>
		</profile>
	</profiles>

如果value字段为空(没有可见字符), 则表示匹配任何值
###file
判断文件是否存在或者不存在, 它又有两个子项<exists>和<missing>. 这两个子项, 只能选其一, 如果这两个子项都存在, <missing>将被忽略; 文件路径只能填相对路径。例如

	<profiles>
		<profile>
			<activation>
				<file>
					<exists>${basedir}/debug.properties</exists>
				</file>
			</activation>
		</profile>
	</profiles>

<file>标签不识别${project.basedir}, 应该属于这个版本的bug.

© 著作权归作者所有

超级大江
粉丝 3
博文 30
码字总数 19647
作品 0
崇明
私信 提问
Maven profile 自动激活 无效

描述:测试 maven-assembly-plugin 插件时,想根据环境自动激活 skipAssembly 属性,按照pom文件的类型, 如果packaging 为pom时,激活profile,否则不激活。以上是我的想法。 编写测试代码如...

wangjunjun2008
2013/06/27
942
0
Maven实战读书笔记(15)

关于灵活的构建 一个优秀的构建系统必须足够灵活,它应该能够让项目在不同的环境下都能成功地构建。 例如,典型的项目都会有开发环境、测试环境和产品环境,这些环境的数据库配置不尽相同,那...

祥林会跟你远走高飞
2014/12/24
0
0
springboot结合maven打包发布

本篇分享如何使用maven便利我们打springboot的发布包;我这里使用的是idea开发工具,首先创建了多个module的项目结构,如图: 要对多个module的项目做打包,一般情况都是在父级pom中配置打包...

神牛003
2018/11/24
0
0
maven配置 两种方法修改jdk版

为了修改maven创建项目默认以来的jdk版本,看了下maven配置 maven2.0默认使用jdk1.5导致反省、@override 等annotation不可用。可用两种方法修改jdk版本 第一种:修改项目的pom.xml,影响单个...

vshcxl
2016/07/13
44
0
解决微服务profile遇到的问题

最近遇到Spring-boot的多个profile切换问题,需求是这样的:微服务中引入了Spring Cloud Config,服务启动的时候,从Config Server中读取该实例对应的配置信息。本地开发环境可能使用的profi...

禁区铁铍人
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java的战争

本文来自微信公众号: 金捷幡(ID:jin-jiefan) ,作者:金捷幡,封面:拉里·埃里森(东方IC) 2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的Android授权。开源软...

Java领航员
48分钟前
2
0
超详细的LM3414MRX/NOPB规格参数介绍就在这里

超详细的LM3414MRX/NOPB规格参数介绍就在这里 描述 LM3414和LM3414MRX/NOPB是具有1-A 60 W(1)共阳极功能的恒流降压LED驱动器。它们适用于驱动单串3-W HBLED,效率高达96%。它们可接受4.5...

不能吃肉的仙女
54分钟前
2
0
Eclipse国内镜像源配置方法

Table of Contents 我们在国内从官网下载Eclipse以及插件非常慢,那么,有没有方法变快呢? 有,那就是使用国内的公开镜像源替换官方源。 1 下载Eclipse 首先,我们看一个链接地址: http:/...

求神
今天
7
0
java 请求服务

一.第一种基于java web http 请求服务,必须用tomcat 容器启动才能对外提供服务 在maven 工程中pox 文件导入jar <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h......

zaolonglei
今天
5
0
HDFS工作机制——自开发分布式数据采集系统

需求描述: 在业务系统的服务器上,业务程序会不断生成业务日志(比如网站的页面访问日志) 业务日志是用log4j生成的,会不断地切出日志文件,需要定期(比如每小时)从业务服务器上的日志目...

须臾之余
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部