Maven依賴及範圍
一、依賴範圍(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按照最短路徑選擇導入
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依賴及範圍