Maven爲了支持構建的靈活性,內置了3大特性,即:屬性、Profile
和資源過濾。java
Maven
的屬性與Java
代碼的常量有殊途同歸之妙,都是爲了消除重複,對相關內容進行統一管理而且能夠減小往後升級版本的工做量,下降錯誤發生的機率。
在POM
文件中,能夠經過${屬性名稱}
的方式來引用屬性。
在Maven
中,存在6類屬性,分別爲:
1) 內置屬性,主要有兩個,分別爲:${basedir}
表示項目根目錄,即POM文件所在的目錄、${version}
表示項目的版本。
2) POM
屬性,用戶能夠經過該類屬性引用POM
文件中對應元素的值,如:web
${project.artifactId}對應到<project><artifactId>的值,經常使用的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.finalName}項目打包輸出文件名稱,默認爲${project.artifactId}-${project.version}
Remark:每個
POM
屬性都對應到一個POM
元素spring
3) 自定義屬性:用戶在POM
文件的<properties>
元素下定義的Maven
屬性,如:mvc
<properties> <spring.boot.version>1.5.9.RELEASE</spring.boot.version> </properties>
4) Settings屬性
與POM
屬性同理,使用settings.
開頭的屬性引用settings.xml
文件中xml
元素的值,如經常使用的${settings.localRepository}
引用本地倉庫的地址。maven
5) Java系統屬性
全部java
系統屬性均可以使用Maven
屬性進行引用,如${user.home}
指向用戶目錄,能夠經過mvn help:system
查看全部的java
系統屬性。測試
6) 環境變量屬性
全部的環境變量可使用env.
開頭的Maven
屬性進行引用,如${env.JAVA_HOME}
指向了JAVA_HOME
環境變量的值,能夠經過mvn help:system
查看全部的環境變量。ui
基於Java
平臺的開發,目前基本都會引進springframework
幫咱們簡化工做,須要MVC
功能,則引入spring-webmvc
,須要事務管理功能,引入spring-tx
。在咱們POM
文件中引入相關依賴:code
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.14.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.14.RELEASE</version> </dependency>
當咱們須要升級springframework
的時候,須要修改多個地方,若是這些依賴不放在一塊兒的時候,則容易形成漏更改,致使多版本並存,這個時候,可使用自定義屬性,如:xml
<properties> <springframework.version>4.3.14.RELEASE</springframework.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${springframework.version}</version> </dependency> </dependencies>
當須要進行版本升級的時候,只須要修改springframework.version
屬性便可。事務
在一個多項目中,模塊之間通常會有依賴,而且這些模塊一般會使用同一的groupId
和version
,這個時候可使用POM
屬性,如:
<dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>demo-base</artifactId> <version>${project.version}</version> </dependency> </dependencies>
這樣,當進行項目版本升級時,就不須要更改依賴模塊的版本了。