dependency标签
原文地址:https://blog.csdn.net/sinat_32034679/article/details/69517838
在一個(gè)maven項(xiàng)目中,依賴是十分重要的一部分,所以單獨(dú)列出一個(gè)章節(jié)來(lái)說(shuō)明。?
在pom.xml文件中,project下直接嵌入的是一個(gè)<dependencies>標(biāo)簽,然后里面嵌入若干個(gè)<dependency>標(biāo)簽。?
這是一個(gè)常見(jiàn)的dependency標(biāo)簽:
下面是一個(gè)“復(fù)雜”的dependency標(biāo)簽:
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.3.2</version><scope>compile</scope><systemPath>./commons-lang3.jar</systemPath><exclusions><exclusion><artifactId>aopalliance</artifactId><groupId>aopalliance</groupId></exclusion></exclusions><optional>false</optional> </dependency>注意其中紅色的部分:?
<scope>:表明此依賴的作用域。有如下取值:?
compile:默認(rèn)。表明此依賴在任何時(shí)刻都生效。包括編譯、測(cè)試、運(yùn)行。?
test :表明此依賴只在測(cè)試時(shí)生效。例如junit.jar。最終的打包是不會(huì)被包含的。?
provided:表明此依賴在目標(biāo)環(huán)境中已經(jīng)存在。例如servlet-api.jar,它在tomcat里已經(jīng)提供了,打包時(shí)是不需要打到war文件中的。?
runtime:表示此依賴只在目標(biāo)環(huán)境中運(yùn)行時(shí)才需要,編譯時(shí)不需要,例如MySQL-connector.jar等這些數(shù)據(jù)庫(kù)驅(qū)動(dòng)。因?yàn)檫@些依賴是具體的實(shí)現(xiàn),是不會(huì)被代碼直接使用的。?
system :表示此依賴是來(lái)自外部jar,而不是maven倉(cāng)庫(kù)。當(dāng)scope設(shè)置為此值時(shí),systemPath屬性才會(huì)生效,systemPath為一個(gè)物理文件路徑,來(lái)指定依賴的jar其物理磁盤(pán)的位置。
<systemPath>:見(jiàn)scope為system的說(shuō)明。?
<exclusion>?:用來(lái)排除傳遞的依賴。例如project1依賴jarA,jarA 依賴jarB。當(dāng)引入jarA時(shí),jarB也會(huì)被引入(在maven中,這被稱為依賴傳遞<transferdependency>)。在某些情況下如果不想jarB被引入,則可以使用exclusion標(biāo)簽來(lái)進(jìn)行控制。?
<optional>?:默認(rèn)值為false。此標(biāo)簽也是用于控制依賴傳遞的。如果將此值設(shè)置為true。則默認(rèn)情況下此依賴不會(huì)被傳遞,除非在引用中顯式引用此依賴。例如project1依賴jarA,jarA 依賴jarB,在jarA中引用jarB時(shí),jarB被標(biāo)記為optional,此時(shí)在project1的依賴中就不會(huì)包含jarB,如需使用jarB,需要顯式引用jarB。
總結(jié):以上配置在通常情況下使用頻率為“較頻繁”,所以還是需要掌握的。scope的system是不被maven官方推薦的,所以要慎用。exclusion標(biāo)簽可以排除傳遞的依賴,這樣可以解決某些依賴沖突。依賴沖突另一種簡(jiǎn)單的解決辦法就是將沖突的依賴顯式引用下,這樣maven就會(huì)使用指定的這個(gè)依賴,而不是自行判斷該使用哪個(gè)依賴(其實(shí)maven對(duì)依賴的管理是采用樹(shù)形結(jié)構(gòu)的,樹(shù)頂端會(huì)”覆蓋”底端的,所以顯式引用某個(gè)依賴能夠解決依賴沖突。依賴沖突還有一種較復(fù)雜的辦法就是使用dependencyManagement,小伙伴可以自行學(xué)習(xí)下)。
轉(zhuǎn)載自?
Dependency依賴
總結(jié)
以上是生活随笔為你收集整理的dependency标签的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决:Please specify a
- 下一篇: Django的核心思想ORM