內置屬性
主要有兩個常用內置屬性:${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)
