很多范例的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也可以开启资源文件的插值操作