不少範例的pom.xml, 都有${basedir}之類的佔位符,maven處理pom.xml時,會將這些佔位符,替換爲對應的值(即插值過程)
maven的pom教程中定義了5種基本類型的property,可是像${basedir}這樣的變量並不屬於任何一類, 我在這裏稱之爲pom變量,因而就有6種類型的屬性。 ####環境變量 引用格式爲${env.X}, 例如 ${env.PATH}表示環境變量中的PATH
####project變量
即引用pom.xml中的其它元素,引用格式爲${project.x}, 舉個例子html
<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的配置)java
###資源文件插值filter 直接舉例子
新建資源文件src/main/resources/my.txt,內容爲
test filter, project basedir is ${project.basedir}
開啓pom的filters配置apache
<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也能夠開啓資源文件的插值操做windows