內置屬性
主要有兩個常用內置屬性:${basedir}
項目的根目錄(包含pom.xml文件的目錄),${version}
項目版本
POM屬性
用戶可以使用該屬性引用POM文件中對應元素的值,常用的POM屬性包括:
${project.build.sourceDirectory}
:項目的主源碼目錄,默認為 src/main/java
${project.build.testSourceDirectory}
:項目的測試源碼目錄,默認為 src/test/java
${project.build.directory}
:項目構件輸出目錄,默認為 target/
${project.outputDirectory}
:項目主代碼編譯輸出目錄,默認為 target/classes/
${project.testOutputDirectory}
:項目測試代碼編譯輸出目錄,默認為 target/test-classes/
${project.groupId}
:項目的 groupId
${project.artifactId}
:項目的 artifactId
${project.version}
:項目的 version,與${version}等價
${project.build.fianlName}
:項目打包輸出文件的名稱。默認為${project.artifactId}-${project.version}
自定義屬性
用戶可以在POM的<properties>
元素下自定義Maven屬性
Settings屬性
用戶使用settings.
開頭的屬性引用 settings.xml 文件中XML元素的值
Java系統屬性
所有Java系統屬性都可以使用Maven屬性引用
環境變量屬性
所有環境變量都可以使用以env.開頭的Maven屬性引用
在依賴中 使用pom變量
1
2
3
4
5
6
7
8
9
10
11
12
|
<
dependencies
>
<
dependency
>
<
groupId
>${project.groupId}</
groupId
>
<
artifactId
>part-a</
artifactId
>
<
version
>${project.version}</
version
>
</
dependency
>
<
dependency
>
<
groupId
>${project.groupId}</
groupId
>
<
artifactId
>part-b</
artifactId
>
<
version
>${project-version}</
version
>
</
dependency
>
</
dependencies
>
|
在插件中使用pom變量
1
2
3
4
5
6
7
8
|
<
plugin
>
<
groupId
>org.apache.maven.plugins</
groupId
>
<
artifactId
>maven-surefire-plugin</
artifactId
>
<
version
>2.5</
version
>
<
configuration
>
<
repositoryDirectory
>${project.build.directory}/test-reports</
repositoryDirectory
>
</
configuration
>
</
plugin
>
|
自定義變量
1
2
3
4
5
6
7
8
9
10
11
|
<
profiles
>
<
profile
>
<
id
>dev</
id
>
<
properties
>
<
db.driver
>com.mysql.jdbc.Driver</
db.driver
>
<
db.url
>jdbc:mysql://localhost:3360/test</
db.url
>
<
db.username
>username</
db.username
>
<
db.password
>password></
db.password
>
</
properties
>
</
profile
>
</
profiles
>
|
Maven屬性默認只有在POM中才會被解析,因此需要讓Maven解析資源文件中的Maven屬性。Maven用maven-resources-plugin
處理資源文件。它默認的行為只是將項目主資源文件復制到主代碼編譯輸出目錄中,將測試資源文件復制到測試代碼編譯輸出目錄中。
Maven默認的主資源目錄和測試資源目錄的定義是在超級POM中,要為資源目錄開啟過濾,只要在此基礎上添加一行filtering配置即可。
Filtering是maven resource插件的功能,作用是用環境變量,pom文件里定義的屬性和指定文件里的屬性替換屬性文件的占位符。(超級pom在 apache-maven-3.3.9\lib\maven-model-builder-3.3.9.jar\org\apache\maven\model\pom-4.0.0.xml)