首頁 > 軟體

pom檔案中${project.basedir}的使用

2022-03-08 13:03:45

${project.basedir}的使用

<project> 是 pom.xml 的根節點,project.basedir 就是根節點的下級節點,缺少設定的話就要自己定義一個。

這塊設定就是定義自己的專案目錄結構

Maven的六類屬性,${project.basedir},${project.build.directory}

內建屬性

主要有兩個常用內建屬性:basedir專案的根目錄(包含pom.xml檔案的目錄),{basedir}專案的根目錄(包含pom.xml檔案的目錄),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,與{project.version}:專案的 version,與project.version:專案的version,與{version}等價
  • project.build.fianlName:專案打包輸出檔案的名稱。預設為{project.build.fianlName}:專案打包輸出檔案的名稱。預設為project.build.fianlName:專案打包輸出檔案的名稱。預設為{project.artifactId}-${project.version}

自定義屬性

使用者可以在POM的元素下自定義Maven屬性

Settings屬性

使用者使用settings.開頭的屬性參照 settings.xml 檔案中XML元素的值

Java系統屬性

所有Java系統屬性都可以使用Maven屬性參照

環境變數屬性

所有環境變數都可以使用以env.開頭的Maven屬性參照

在依賴中 使用pom變數

<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變數

<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>

自定義變數

 <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>
</profiles>

Maven屬性預設只有在POM中才會被解析,因此需要讓Maven解析資原始檔中的Maven屬性。Maven用maven-resources-plugin處理資原始檔。它預設的行為只是將專案主資原始檔複製到主程式碼編譯輸出目錄中,將測試資原始檔複製到測試程式碼編譯輸出目錄中。

Maven預設的主資源目錄和測試資源目錄的定義是在超級POM中,要為資源目錄開啟過濾,只要在此基礎上新增一行filtering設定即可。

Filtering是maven resource外掛的功能,作用是用環境變數,pom檔案裡定義的屬性和指定檔案裡的屬性替換屬性檔案的預留位置。(超級pom在 apache-maven-3.3.9libmaven-model-builder-3.3.9.jarorgapachemavenmodelpom-4.0.0.xml)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com