日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

dependency标签

發(fā)布時(shí)間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dependency标签 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址: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)簽:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.3.2</version> </dependency>

下面是一個(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。