maven常用配置信息和常量


 

1.   通過 <properties> 元素用戶可以自定義一個或多個屬性,然后在 POM 的其他地方使用 ${ 屬性名稱 } 的方式引用屬性,這種做法的最大意義在於消除重復。
 
2.   Maven 共有六類屬性:
  1) 內置屬性: ${basedir} 表示項目根目錄,即 pom.xml 文件的目錄。 ${version} 表示項目版本。
  2) POM 屬性:用戶可以使用該類屬性引用 POM 文件中對應元素的值:
    a)  ${project.build.sourceDirectory} :項目的主源碼目錄,默認為 src/main/java
    b)  ${project.build.testSourceDirectory} :項目的測試源碼目錄,默認為 src/test/java
    c)  ${project.build.directory} :項目構建輸出目錄,默認為 target/
    d)  ${project.outputDirectory} :項目主代碼編譯輸出目錄,默認為 target/classes
    e)  ${project.testOutputDirector} :項目測試代碼編譯輸出目錄,默認為 target/test-classes/
    f)   ${project.groupId} :項目的 groupId
    g)  ${project.artifactId} :項目的 artifactId
    h)  ${project.version} :項目的 version ,與 ${version} 等價
    i)   ${project.build.finalName} :項目打包輸出文件的名稱,默認為 ${project.artifactId}-${project.version}
它們的默認值是在超級 POM 中定義的。
  3) 自定義屬性:用戶可以在 POM 的 <properties> 元素下自定義 Maven 屬性。
  4) Settings 屬性:與 POM 屬性同理,用戶以 settings. 開頭的屬性引用 settings.xml 文件中 XML 元素的值。如${settings.localRepository} 指向本地倉庫的位置
  5) Java 系統屬性:所有 Java 系統屬性都可以使用 Maven 屬性引用。如 ${user.home} 指向用戶目錄。可以用 mvn help:system 查看所有 Java 系統屬性 ( 包含 -D 參數設置的屬性 ) 。
  6) 環境變量屬性:所有環境變量都可以使用 env. 開頭的 Maven 屬性引用。如 {env.JAVA_HOME} 。可以用 mvn help:system 查看所有環境變量屬性。
 
3.   POM 的 <build> 元素下可以使 用 <resources> 和 <testResources> 定義多個資源目錄和測試資源目錄。 在<resource> 和 <testResource> 下定義 <filtering> 元素來告 訴 Maven 是否要解析資源文件中的 Maven 屬性,如:
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
4.   mvn 的 -P 參數表示在命令行激活一個 profile 。如:
    mvn clean install –Pdev
    表示激活 ID 為 dev 的 profile 。我們可以在 id 為 dev 的 profile 中定義 dev 環境下的數據庫連接等配置的 Maven 屬性,從而用上述命令構建一個 dev 環境下的構件。
 
5.   Maven profile 能夠在構建的時候修改 POM 的一個子集,或者添加額外的配置元素。用戶可以使用很多方式激活 profile,以實現構建在不同環境下的移植。
 
6.   Maven 激活 profile 的方式有 :
  1)   命令行激活:通過 mvn 命令行的 –P 參數可以激活一個或多個 profile ,多個 id 之間用逗號分隔。如: mvn clean install –Pdev-x,dev-y
  2)   settings 文件顯示激活: settings.xml 文件的 activeProfiles 元素可以配置一個或多個 profile 對於所有項目都是處於激活狀態,如:
<settings>
<activeProfiles>
<activeProfile>dev-x</activeProfile>
<activeProfile>dev-y</activeProfile>
</activeProfiles>
</settings>
3)   系統屬性激活:用戶可以配置當某系統屬性存在的時候激活 profile (不配置 <value> 屬性),進而可以設置當某系統屬性存在並等某值的時候激活。如 :
<profiles>
<profile>
<activation>
<property>
<name>test</name>
<value>x</value>
</property>
</activation>
</profile>
</profiles>
4) 操 作系統環境激活:
<profiles>
<profile>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
</profile>
</profiles>
    這里 family 的值包括 Windows 、 UNIX 和 Mac 等。 name 、 arch 、 version 可以通過查看環境中的系統屬性 os.name、 os.arch 和 os.version 獲得。
  5) 文件存在與否激活:
<profiles>
<profile>
<activation>
<file>
<missing>x.properties</missing>
<exists>y.properties</exists>
</file>
</activation>
</profile>
</profiles>
6) 默認激活:
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
    但如果 POM 中有任何一個 profile 通過以上其他任意一種方式被激活了,所有的默認激活配置都會失效。
    激活的多個 profile 中的沖突屬性如何解決?
7.   可以用 mvn help:active-profiles 查看當前項目所有被激活的 profile 。可以用 mvn help:all-profiles 查看當前項目目的所有的 profile 。
8.   profile 可以在如下位置聲明:
  1)p om.xml :只對當前項目有效
  2) ~/.m2/settings.xml :對該用戶所有 Maven 項目有效
  3) M2_HOME/conf/settings.xml :對本機上所有 Maven 項目有效
  4) profiles.xml :可以在項目根目錄下使用一個額外的 profiles.xml 文件,只對項目有效。該文件默認不會被安裝和部署。 Maven 3 已經不支持這種形式。
    在 POM 中定義的 profile 可以修改以下項目屬性:
<profile>
<repositories/>
<pluginRepositories/>
<distributionManagement/>
<dependencies/>
<dependencyManagement/>
<modules/>
<properties/>
<reporting/>
<build>
<plugins/>
<defaultGoal/>
<resources/>
<testResources/>
<finalName/>
</build>
</profile>
    但在其他地方定義的 profile 由於無法保證它們能隨着特定的 pom.xml 一起被分發,因此只允許修改以下屬性:
<profile>
<repositories/>
<pluginRepositories/>
<properties/>
</profile>
9.   Web 資源文件默認位於 src/main/webapp/ 目錄,打包后位於 WAR 包的根目錄。開啟一般資源文件的過濾(替換 Maven 屬性)也不會影響到 web 資源文件。可以在 POM 中配置 maven-war-plugin 配置 web 資源目錄及是否過濾:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-beta-1</version>
<configuration>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/main/webapp</directory>
<includes>
<include>**/*.css</include>
<include>**/*.js</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
10.   可以用標注將 Unit Test 和 Integration Test 進行分組,從而可以在 profile 中配置 maven-surefire-Plugin 定義執行不同的 Test :
<configuration>
<groups>group-name</groups>
</configuration>
 


免責聲明!

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



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