Maven 座標和依賴

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 的依賴-查明測試運行是否使用。-->
相關文章
相關標籤/搜索