Maven屬性(properties)標簽的使用


在命令行使用屬性時,是-D,比如:mvn -Dinput=test

引用官方的說明https://maven.apache.org/pom.html#Properties

Properties

屬性是了解POM基礎知識的最后一個要素。Maven屬性是值占位符,如Ant中的屬性。它們的值可以通過使用符號${X}在POM中的任何位置訪問,其中X是屬性。

他們有五種不同的風格:

1、env.X:使用“env”來定義變量。將返回shell的環境變量。例如,${env.PATH}包含PATH環境變量。

注意:雖然環境變量本身在Windows上不區分大小寫,但查找屬性區分大小寫。換句話說,雖然Windows shell為%PATH%%Path%返回相同的值,但Maven區分${env.PATH}${env.Path}。對於Maven 2.1.0,為了可靠性,環境變量的名稱被歸一化為所有大寫

2、project.x:POM中的點(.)記號路徑將包含相應元素的值。例如:可以通過${project.version}訪問<project><version>1.0</version></project>

3、settings.xsettings.xml中的點(.)標注路徑將包含相應的元素的值。例如:<settings><offline>false</offline></ settings>可通過${settings.offline}訪問。

4、Java系統屬性:可通過java.lang.System.getProperties()訪問的所有屬性都可用作POM屬性,如${java.home}

5、x:在POM中的<properties />元素中設置。<properties><someVar>value</someVar></properties>的值可以用作${someVar}

 

而在第2點中訪問pom.xml文件的屬性時,其實還有一些內置的變量,如下:

${project.basedir}:這引用了module/project的根文件夾(當前pom.xml文件所在的位置),還可以簡化的寫法:${basedir}

以上更多用法參考:http://maven.apache.org/ref/3.5.0/maven-model-builder/#Model_Interpolation

${project.build.directory}:這表示默認的target文件夾。

${project.build.outputDirectory}:默認情況下表示target/classes文件夾。

${project.build.testOutputDirectory}:這表示默認的target/test-classes文件夾。

${project.build.sourceDirectory}:這表示默認情況下src/main/java文件夾。

${project.build.testSourceDirectory}:這表示默認情況下src/test/java文件夾。

${project.build.finalName}:默認情況下定義為${project.artifactId}-${project.version}

${project.version}:這可以在必須編寫文字版本的位置使用,否則,特別是如果您在多模塊構建模塊間依賴關系。

以上更多用法參考:http://maven.apache.org/pom.html#The_Super_POM

${settings.localRepository}:它引用了本地存儲庫的位置。這是默認的${home}/.m2/repository

以上更多用法參考:http://maven.apache.org/pom.html#Properties

以上參考:https://cwiki.apache.org/confluence/display/MAVEN/Maven+Properties+Guide

 

而針對第5點時應該是項目上最多使用的,比如以下為項目實踐的簡單pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.jsoft.test</groupId>
    <artifactId>test-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <profiles></profiles>
    <properties>
        <test.uuid>123</test.uuid>
        <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
        <jdbc.url>jdbc:mysql://localhost/stock?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true</jdbc.url>
        <jdbc.username>root</jdbc.username>
        <jdbc.password>123456</jdbc.password>
        <jdbc.validationQuery>SELECT 1 + 1</jdbc.validationQuery>
    </properties>
    <build>
        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>${project.basedir}/src/main/resources/${test.uuid}</directory>
                <includes>
                    <include>*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

可以看出只要在properties節點配置了自定義屬性即可在任意地方使用,形式如${x}。

當然除了在pom.xml使用自定義屬性外,還可以在properties文件中使用,比如項目文件src/main/resources/jdbc.properties的文件,寫入如下所示:

jdbc.driverClassName=${jdbc.driverClassName}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
jdbc.validationQuery=${jdbc.validationQuery}

 


免責聲明!

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



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