文档章节

maven pom进阶教程 - properties、filter

超级大江
 超级大江
发布于 2017/01/31 20:21
字数 494
阅读 62
收藏 0

很多范例的pom.xml, 都有${basedir}之类的占位符,maven处理pom.xml时,会将这些占位符,替换为对应的值(即插值过程)
maven的pom教程中定义了5种基本类型的property,但是像${basedir}这样的变量并不属于任何一类, 我在这里称之为pom变量,于是就有6种类型的属性。 ####环境变量 引用格式为${env.X}, 例如 ${env.PATH}表示环境变量中的PATH
####project变量
即引用pom.xml中的其它元素,引用格式为${project.x}, 举个例子

   <version>0.9</version>
	<properties>
		<!-- 自定义变量 -->
		<myproperty>my value</myproperty>
	</properties>
   <build>
       <finalName>it's my final name</finalName>
   </build>
</project>

${project.version}的值为0.9 ${project.build.finalName}的值为it's my final name ####**setting.xml变量 ** 引用maven安装目录下的conf/setting.xml中的值, 格式为${setting.x} ####java系统变量 引用方式${VariableName}, 比如${java.home}, 更多参数可以在oracle的官网上查到https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html。也包括执行mvn指令时,附带的-Dkey=value这种形式的变量 ####自定义变量 上面的例子myproperty就是自定义的变量,引用方式为${mypoperty} ####pom变量 经常看到以下三个变量(定义在http://maven.apache.org/components/ref/3-LATEST/maven-model-builder/),
${project.basedir} pom.xml所在目录
${basedir} 同上
${project.build.sourceEncoding}, 源文件的编译类型,可以在properties标签下重写这个变量,将值改变为UTF-8, windows上都需要这么做。(如果出现了资源文件编码不匹配之类的错误,也可以修改插件maven-resources-plugin的配置)

###资源文件插值filter 直接举例子
新建资源文件src/main/resources/my.txt,内容为
test filter, project basedir is ${project.basedir}
开启pom的filters配置

	<build>
		<filters>
			<filter>src/main/resources/my.txt</filter>
		</filters>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering><!--启用插值处理-->
			</resource>
		</resources>
	</build>

执行mvn compile
打开\target\classes\my.txt, 内容变成了
test filter, project basedir is D:\xxx\xxx\test
处理资源文件的插件maven-resources-plugin也可以开启资源文件的插值操作

© 著作权归作者所有

超级大江
粉丝 3
博文 30
码字总数 19647
作品 0
崇明
私信 提问
Maven Multi-environment package

Multi-environment The project is divided into three kinds of environment:local、dev、pro。 不同的环境配置不同,如果只拥有一套配置的话,会导致在不同的环境上需要反复的修改相同配置...

Nathans
2016/09/07
17
0
利用maven的filter和profile实现不同环境使用不同的配制

在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制...

戢冠生
2016/08/11
35
0
maven常用配置的变量

maven的变量 maven定义了很多变量属性,参考这里 http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide 1)内置属性 Xml代码 ${basedir} represents the directory containing p......

囧南风囧
2016/05/18
38
0
maven pom.xml加载不同properties配置

1.pom.xml =========================== <!-- 不同的打包环境配置: test=开发/测试测试环境, product=生产环境; 命令行方式: mvn clean install -Dmaven.test.skip=true -Ptest 或 -Pproduc......

今幕明
2015/04/13
0
0
工程化专题之Maven(下)

前言 《工程化专题之Maven(上)》 本文是工程化专题之Maven的下篇,主要涵盖的是Maven的Profile/Filter特性,多模块开发以及私服等内容。 不同环境使用不同配置:Profile+Filter 在实际开发...

张丰哲
2017/08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android双向绑定原理简述

Android双向绑定原理简述 双向绑定涉及两个部分,即将业务状态的变化传递给UI,以及将用户输入信息传递给业务模型。 首先我们来看业务状态是如何传递给UI的。开启dataBinding后,编译器为布局...

tommwq
今天
2
0
Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
6
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
3
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部