Maven 座標的元素包括 groupId,artifactId,version,packaging,classifier。這些一塊兒共同肯定了 一個java構件的惟一標識。任何一個構件必須明肯定義本身的座標。java
Maven 內置中央倉庫地址 http://repol.maven.org/maven2spring
nexus-indexer是一個對maven倉庫編撰索引並提供搜索功能的類庫,是 nexus項目的一個子模塊。api
座標元素 | 含義 | 是否必須 |
---|---|---|
groupId | 定義當前Maven項目隸屬於的實際項目 | 必須 |
artifactId | 定義實際項目中的一個Maven項目(模塊),建議以實際項目名作前綴。 | 必須 |
version | 定義Maven項目當前所處的版本。 | 必須 |
packaging | 定義Maven項目的打包方式。如 jar,war。默認值 jar。不一樣打包方式影響構建的生命週期。 | 可選 |
classifier | 定義構建輸出的一些附屬構件。如 javadoc,sources。注意:不能直接定義項目的classifier,其不是項目直接默認生成,而是由附加的插件幫助生成的。 | 不能直接定義 |
項目構件的文件名與座標相對應,通常規則爲 artifactId-version[-classifier].packaging,[-classifier]表示可選bash
依賴配置:maven
<dependencies> <dependency> <groupId>...</groupId> <artifactId>...</artifactId> <version>...</version> <type>...</type> <scope>...</scope> <optional>...</optional> <exclusions> <exclusion> ... </exclusion> ... </exclusions> </dependency> ... </dependencies>
groupId,artifactId,version :依賴的基本座標,對於任何一個依賴來講,基本座標是最重要的。ide
type:依賴的類型,對應於項目座標定義的packaging。大部分狀況下,該元素沒必要聲明,其默認是jar測試
scope:依賴的範圍spa
optional:標記依賴是否可選。插件
exclusions:用來排除傳遞性依賴。code
大部分依賴聲明只包含基本座標。不是一些狀況下,其餘元素也很重要。
Scope 主要針對 編譯,測試,運行 三種狀況
依賴範圍(scope) | 編譯有效 | 測試有效 | 運行有效 | 例子 |
---|---|---|---|---|
compile(編譯依賴) | 有 | 有 | 有 | spring-core |
test(測試依賴) | 無 | 有 | 無 | Junit |
provided(已提供依賴) | 有 | 有 | 無 | servlet-api |
runtime(運行時依賴) | 無 | 有 | 有 | jdbc驅動 |
system(系統依賴) | 有 | 有 | 無 | 本地的maven外的類庫文件 |
import(導入依賴) |
import:只有在 dependencyManagement中有效,做用是將目標的pom中的 denpendencyManagement配置導入到 當前的pom的denpendencyManagement元素中
傳遞性依賴和依賴範圍
A依賴B,B依賴C。A對於B是第一直接依賴,B對於C 是第二直接依賴
左邊第一直接依賴,上面第二直接依賴
第一依賴\第二依賴 | compile | test | provided | runtime |
---|---|---|---|---|
compile | compile | - | - | runtime |
test | test | - | - | test |
provided | provided | - | provided | provided |
runtime | runtime | - | - | runtime |
依賴調解:第一原則:路徑最近者優先。2.09版本後,第二原則:順序最靠前的那個依賴優先。
可選依賴 optional 爲 true 時,該依賴不傳遞。
排除依賴:exclusions能夠包含多個 exclusion 子元素,排除依賴,聲明exclusion只須要 groupId和artifactId,不須要 version。
歸類依賴:properties 元素定義 Maven 屬性 ,可使用 ${變量名} 的方式引用 Maven 屬性-常量。
<properties> <springframework.version>***</springframework.version> </properties>
經常使用 依賴相關 命令
若是命令不成功,根據相關提示,引入插件
mvn dependency:list <!--查詢全部依賴列表--> mvn dependency:tree <!--查詢全部依賴,以樹形結構--> mvn dependency:analyze <!--分析目前依賴使用狀況--主要針對編譯依賴。 引入:Used undeclared denpendencise 的依賴 分析:Unsed declared denpendencise 的依賴-查明測試運行是否使用。-->