1. 程式人生 > >Maven依賴及範圍

Maven依賴及範圍

-a unit 選擇 artifact 排除 依賴範圍 -- 路徑 優先

一、依賴範圍(scope):

共5種,compile (編譯)、test (測試)、runtime (運行時)、provided、system

compile:編譯依賴範圍,在編譯,測試,運行時都需要。依賴範圍默認為compile.

test: 測試依賴範圍,測試時需要。編譯和運行不需要。如Junit

runtime: 運行時依賴範圍,測試和運行時需要。編譯不需要。如JDBC驅動包

provided:已提供依賴範圍,測試和編譯時需要。運行時不需要。如servlet-api

system:系統依賴範圍。依賴不在maven倉庫的資源

二、依賴的傳遞:

A->B(compile) 第一關系: a依賴b compile

B->C(compile) 第二關系: b依賴c compile

當在A中配置

<dependency>
<groupId>com.B</groupId>
<artifactId>B</artifactId>
<version>1.0</version>
</dependency>

則會自動導入c包。

三、依賴沖突的調節:

A->B->C->X(1.0)

A->D->X(2.0)

由於只能引入一個版本的包,此時Maven按照最短路徑選擇導入

x(2.0)

A->B->X(1.0)

A->D->X(2.0)

路徑長度一致,則優先選擇第一個,此時導入x(1.0)

四、排除依賴:

A->B->C(1.0)

此時在A項目中,不想使用C(1.0),而使用C(2.0)

則需要使用exclusion排除B對C(1.0)的依賴。並在A中引入C(2.0).

pom.xml中配置

<!--排除B對C的依賴-->

<dependency>
<groupId>B</groupId>
<artifactId>B</artifactId>
<version>0.1</version>
<exclusions>
<exclusion>
<groupId>C</groupId>
<artifactId>C</artifactId><!--無需指定要排除項目的版本號-->
</exclusion>
</exclusions>
</dependency>

<!---在A中引入C(2.0)-->

<dependency>
<groupId>C</groupId>
<artifactId>C</artifactId>
<version>2.0</version>
</dependency>

轉http://www.cnblogs.com/beenupper/p/3344208.html

Maven依賴及範圍