1. 程式人生 > >maven常用配置的變數

maven常用配置的變數

1)內建屬性
Xml程式碼  
  1. ${basedir} represents the directory containing pom.xml  
  2. ${version} equivalent to ${project.version} or ${pom.version}  


2)Pom/Project properties 
所有pom中的元素都可以用 project. 字首進行引用,以下是部分常用的 
Xml程式碼  
  1. ${project.build.directory } results in the path to your "target" dir, this is the same as ${pom.project.build.directory }  
  2. ${project.build. outputD irectory } results in the path to your "target/classes" dir  
  3. ${project.name } refers to the name of the project.  
  4. ${project.version } refers to the version of the project.  
  5. ${project.build.finalName } refers to the final name of the file created when the built project is packaged  


3)本地使用者設定 
所有用的的 settings.xml 中的設定都可以通過 settings. 字首進行引用 
Xml程式碼  
  1. ${settings.localRepository } refers to the path of the user's local repository.  
  2. ${maven.repo.local } also works for backward compatibility with maven1 ??  


4)環境變數 
系統的環境變數通過 env. 字首引用 
Xml程式碼  
  1. ${env.M2_HOME } returns the Maven2 installation path.  
  2. ${java.home } specifies the path to the current JRE_HOME environment use with relative paths to get for example:   
  3. <jvm>${java.home}../bin/java.exe</jvm>  


5)java系統屬性 
所有JVM中定義的java系統屬性. 

6)使用者在pom中定義的自定義屬性
Xml程式碼  
  1. <project>   
  2.     ...   
  3.     <properties>   
  4.         <my.filter.value>hello</my.filter.value>   
  5.     </properties>   
  6.     ...   
  7. </project>  

則引用 ${my.filter.value } 就會得到值 hello 

7)上級工程的變數 
Xml程式碼  
  1. 上級工程的pom中的變數用字首 ${project.parent } 引用. 上級工程的版本也可以這樣引用: ${parent.version }.maven的變數  


8)引用屬性Reflection Properties
The pattern ${someX.someY.someZ} can simply sometimes mean getSomeX().getSomeY().getSomeZ(). Thus, properties such as ${project.build.directory} is translated to getProject().getBuild().getDirectory(). 


彙總變數列表: 
*  project (from [1]) 
          o project.distributionManagementArtifactRepository 
          o project.artifact 
          o project.parent 
          o project.file 
          o project.artifacts 
          o project.parentArtifact 
          o project.pluginArtifacts 
          o project.remoteArtifactRepositories 
          o project.pluginArtifactRepositories 
          o project.attachedArtifact 
    * settings (from [2]) 
          o settings.offilne 
          o settings.interactive 
    * rootless (from [3]) 
          o localRepository 
          o reactorProjects 
    * java properties (from [4]) 
          o java.version 
          o java.vendor 
          o java.vendor.url 
          o java.home 
          o java.vm.specification.version 
          o java.vm.specification.vendor 
          o java.vm.specification.name 
          o java.vm.version 
          o java.vm.vendor 
          o java.vm.name 
          o java.specification.version 
          o java.specification.vendor 
          o java.specification.name 
          o java.class.version 
          o java.class.path 
          o java.library.path 
          o java.io.tmpdir 
          o java.compiler 
          o java.ext.dirs 
          o os.name 
          o os.arch 
          o os.version 
          o file.separator 
          o path.separator 
          o line.separator 
          o user.name 
          o user.home 
          o user.dir

Maven共有6類屬性:

內建屬性(Maven預定義,使用者可以直接使用)

${basedir}表示專案根目錄,即包含pom.xml檔案的目錄;

${version}表示專案版本;

${project.basedir}同${basedir};

${project.baseUri}表示專案檔案地址;

${maven.build.timestamp}表示專案構件開始時間;

${maven.build.timestamp.format}表示屬性${maven.build.timestamp}的展示格式,預設值為yyyyMMdd-HHmm,可自定義其格式,其型別可參考java.text.SimpleDateFormat。用法如下:

<properties>

<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>

</properties>

POM屬性(使用pom屬性可以引用到pom.xml檔案對應元素的值)

${project.build.directory}表示主原始碼路徑;

${project.build.sourceEncoding}表示主原始碼的編碼格式;

${project.build.sourceDirectory}表示主原始碼路徑;

${project.build.finalName}表示輸出檔名稱;

${project.version}表示專案版本,與${version}相同;

自定義屬性(在pom.xml檔案的<properties>標籤下定義的Maven屬性)

<project>

  <properties>

    <my.pro>abc</my.pro>

  </properties>

</project>

在其他地方使用${my.pro}使用該屬性值。

settings.xml檔案屬性(與pom屬性同理,使用者使用以settings.開頭的屬性引用settings.xml檔案中的XML元素值)

${settings.localRepository}表示本地倉庫的地址;

Java系統屬性(所有的Java系統屬性都可以使用Maven屬性引用)

使用mvn help:system命令可檢視所有的Java系統屬性;

System.getProperties()可得到所有的Java屬性;

${user.home}表示使用者目錄;

環境變數屬性(所有的環境變數都可以用以env.開頭的Maven屬性引用)

使用mvn help:system命令可檢視所有環境變數;

${env.JAVA_HOME}表示JAVA_HOME環境變數的值;