Maven 教程(19)— Maven的六類屬性,${project.basedir},${project.build.directory}:項目構件輸出目錄,默認為 target/


內置屬性

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM