欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Maven的依賴-創(chuàng)新互聯(lián)

1、Maven的依賴

Maven的依賴通過dependencis元素來配置依賴,這是Maven最強(qiáng)大的特性之一。它支持傳遞性依賴。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供奎屯網(wǎng)站建設(shè)、奎屯做網(wǎng)站、奎屯網(wǎng)站設(shè)計(jì)、奎屯網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、奎屯企業(yè)網(wǎng)站模板建站服務(wù),10余年奎屯做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

1.1 添加依賴

在Maven中需要使用在dependencies中定義一個(gè)或者多個(gè)dependency元素,來聲明項(xiàng)目的一個(gè)或者多個(gè)依賴。
每個(gè)依賴元素dependency包括:
Maven的依賴
例如:為項(xiàng)目添加junit測試的jar包,可以按如下方式定義

<project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd " >      <modelVersion>4.0.0</modelVersion>      <groupId>com.fz</groupId>      <artifactId>ShiroTest</artifactId>      <packaging>war</packaging>      <version>0.0.1-SNAPSHOT</version>      <name>ShiroTest Maven Webapp</name>      <url> http://maven.apache.org </url>      <dependencies>          <dependency>              <groupId>junit</groupId>              <artifactId>junit</artifactId>              <version>4.11</version>              <!--不聲明依賴范圍scope,默認(rèn)是compile-->              <scope>test</scope>          </dependency>      </dependencies> </project>

1.2 依賴范圍(sope)

<dependency>    <!--     compile(默認(rèn)):編譯范圍的依賴,它在編譯和打包的時(shí)候都會把該依賴打包進(jìn)去    test:測試依賴范圍,它在編譯和打包的時(shí)候都不會把該依賴打包進(jìn)去    provided:在編譯和測試范圍有效,最后生成war包時(shí)不會打包進(jìn)去。    runtime:運(yùn)行時(shí)依賴,編譯的時(shí)候不依賴。    system:系統(tǒng)依賴范圍    import:導(dǎo)入依賴范圍     -->    <scope></scope></dependency>
依賴范圍與classpath的關(guān)系
依賴范圍Scope對于編譯classpath有效對于測試classpath有效對于運(yùn)行時(shí)classpath有效例子
compileYYYspring-core
testYJUnit
providedYYservlet-api
runtimeYYJDBC驅(qū)動(dòng)實(shí)現(xiàn)
systemYY本地的,Maven倉庫之外的類庫文件

1.3 依賴的傳遞性

在Maven中一個(gè)依賴不僅僅是一個(gè)JAR。它是一個(gè)POM文件,這個(gè)POM可能也聲明了對其它構(gòu)件的依賴。這些依賴的依賴叫做傳遞性依賴
所謂傳遞性依賴就是: 如果項(xiàng)目A依賴于項(xiàng)目B,項(xiàng)目B自身依賴于項(xiàng)目C,那么項(xiàng)目A它也依賴于項(xiàng)目C的依賴。
這種依賴是基于compile這個(gè)范圍進(jìn)行依賴
假如你的項(xiàng)目中需要依賴一個(gè)A庫,這個(gè)A庫自身又依賴了3個(gè)其它庫。當(dāng)你在dependencies中配置了A庫的依賴的時(shí)候,則Maven會自動(dòng)依賴3個(gè)其他庫。不用你再自己去依賴了。就像Spring和Hibernate一樣。你配置的時(shí)候,只需要配置Spring和Hibernate即可。
Maven在下載相應(yīng)依賴的jar的時(shí)候,還會下載該jar的pom文件。這個(gè)文件對于傳遞性依賴特別重要。
這個(gè)pom文件跟我們現(xiàn)在編寫的pom.xml文件沒太大區(qū)別,打開后其實(shí)也是一樣。
如下是hibernate-core-4.3.10.Final.jar的pom文件(hibernate-core-4.3.10.Final.pom)

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  <modelVersion>4.0.0</modelVersion>  <groupId>org.hibernate</groupId>  <artifactId>hibernate-core</artifactId>  <version>4.3.10.Final</version>  <dependencies>    <dependency>      <groupId>org.jboss.logging</groupId>      <artifactId>jboss-logging</artifactId>      <version>3.1.3.GA</version>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>org.jboss.logging</groupId>      <artifactId>jboss-logging-annotations</artifactId>      <version>1.2.0.Beta1</version>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>org.jboss.spec.javax.transaction</groupId>      <artifactId>jboss-transaction-api_1.2_spec</artifactId>      <version>1.0.0.Final</version>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>dom4j</groupId>      <artifactId>dom4j</artifactId>      <version>1.6.1</version>      <scope>compile</scope>    </dependency>    <!-----------省略部分----------->  </dependencies>  <name>Core Hibernate O/RM functionality</name>  <description>The core O/RM functionality as provided by Hibernate</description>  <url>http://hibernate.org</url>  <organization>    <name>Hibernate.org</name>    <url>http://hibernate.org</url>  </organization>  <issueManagement>    <system>jira</system>    <url>https://hibernate.atlassian.net/browse/HHH</url>  </issueManagement>  <scm>    <url>http://github.com/hibernate/hibernate-orm</url>    <connection>scm:git:http://github.com/hibernate/hibernate-orm.git</connection>    <developerConnection>scm:git:git@github.com:hibernate/hibernate-orm.git</developerConnection>  </scm>  <licenses>    <license>      <name>GNU Lesser General Public License</name>      <url>http://www.gnu.org/licenses/lgpl-2.1.html</url>      <comments>See discussion at http://hibernate.org/license for more details.</comments>      <distribution>repo</distribution>    </license>  </licenses>  <developers>    <developer>      <id>hibernate-team</id>      <name>The Hibernate Development Team</name>      <organization>Hibernate.org</organization>      <organizationUrl>http://hibernate.org</organizationUrl>    </developer>  </developers></project>

可以看到hibernate-core-4.3.10.Final.pom文件中已經(jīng)定義了hibernate-core-4.3.10.jar自己所依賴的jar包了。

1.2.1 依賴傳遞性的沖突問題
1. 第一種情況

Maven的依賴
項(xiàng)目A依賴于項(xiàng)目B1.0 ,項(xiàng)目C依賴于項(xiàng)目B1.1。項(xiàng)目D同時(shí)依賴于項(xiàng)目A和C,那么哪一個(gè)寫在前面就先依賴哪個(gè)版本。
也就是說到底依賴于log4j1.2.17還是log4j1.2.16,決定于它的dependency出現(xiàn)的先后順序。
哪個(gè)依賴的順序在前面就依賴哪個(gè)
可見上面user-core在user-log前面,而user-core的log4j是1.2.17。那么最終user-dao的log4j就是1.2.17版本
同理,如果換個(gè)位置。user-log在user-core的前面。

<dependencies> <dependency>        <groupId>com.fz.user</groupId>        <artifactId>user-log</artifactId>        <version>0.0.1-SNAPSHOT</version>    </dependency>    <dependency>        <groupId>com.fz.user</groupId>        <artifactId>user-core</artifactId>        <version>0.0.1-SNAPSHOT</version>    </dependency></dependencies>

那么結(jié)果就是
Maven的依賴

2. 第二種情況

Maven的依賴
如果路徑的長短不一致,就選擇最小路徑
user-dao中的log4j路徑:user-dao=====>user-core=====>log4j1.2.17
user-log中的log4j路徑:user-log=====>log4j1.2.16
可見user-log的log4j路徑要短一些,所以這里是1.2.16
Maven的依賴
如果這里把user-log換成user-core的話,那么user-core的log4j路徑也是比user-dao的路徑短。結(jié)果肯定是log4j1.2.17
Maven的依賴

假如我不想依賴user-core和user-log兩個(gè)模塊中的log4j呢?
那就自己再添加一個(gè)dependency試試。
Maven的依賴
可以看出Maven會優(yōu)先依賴自己定義的那個(gè)dependeny

1.2.2 通過exclusions元素排除不想要的傳遞性依賴

以上的問題可以通過更改相應(yīng)的順序來確定依賴的版本,當(dāng)然也可以使用依賴的排除功能。來精確的控制所使用的版本。
排除依賴:就是將該模塊中的**jar包給移除掉。
例如:以下的情況肯定是使用了user-log的log4j版本,因?yàn)樗捻樞蛟谇懊?。假如現(xiàn)在不想通過調(diào)整順序來改版本那就可以使用排除依賴。
Maven的依賴
排除依賴是在dependency元素下的exclusions元素,例如:我們把user-log中的log4j排除掉,那就只能去user-core中找log4j了
Maven的依賴
可以看出雖然user-log寫在了上面,但是通過exclusion還是會把該模塊中的log4j給排除掉。

1.2.3 依賴傳遞性沖突問題解決辦法總結(jié)
  1. 通過調(diào)整dependency的順序來解決:哪個(gè)依賴的順序在前面就依賴哪個(gè)

  2. 自己添加一個(gè)dependeny來解決:因?yàn)樵撀窂绞亲钚〉摹?/p>

  3. 通過exclusions元素排除不想要的傳遞性依賴

1.4 依賴版本的界限

在依賴某個(gè)項(xiàng)目的時(shí)候,你可以不必指定特定的某個(gè)版本。也可以指定一個(gè)版本范圍
(,) 不包含
[,] 包含
例如:依賴一個(gè)Junit的大于等于3.8 但是小于4.0 的版本

<dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>[3.8,4.0)</version></dependency>

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:Maven的依賴-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://aaarwkj.com/article22/dsppcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、建站公司、微信小程序、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
国产第一页国产第一页| 加勒比在线观看欧美一区| 四虎国产最新在线免费| 国产成人大片中文字幕在线| 亚洲欧洲精品真人av蜜臀| 女同久久精品国产精品天堂99| 亚洲全乱码精品一区二区| 日韩欧美中文在线一区二区| 91欧美精品午夜性色福利| 日韩国产精品一区二区| 免费精品黑人一区二区三区| 亚洲欧美日韩在线观看a三区| 日韩欧美性生活免费观看| 亚洲精品国产中文字幕| 91免费人成网站在线观看| 日本欧美激情在线观看| 亚洲国产精品二区三区| 欧美日韩一区二区午夜福利| 成人黄色动漫在线播放| 亚洲av成人一区二区三区| 日韩亚洲一区在线观看| 剧情av一区二区在线| 日本高清一区二区网站| 性生活免费在线观看视频| 全国精品免费视频久久久| 五月天丁香婷婷深爱| 偷拍色图一区二区二区| 日韩一区二区三区四区精品| 天堂av影片在线观看| 人人妻人人澡人人爽久久av| 一区二区三区特黄色片| 久久精品二区亚洲w码| 久久久久久这里都是精品| 夜夜爽精品国产亚洲av成人| 国产在线精品专区第一页| 高清日本一区二区三区不卡片| 后入式动漫在线观看| 久久精品一区二区熟女| 禁区正片免费看完整国产 | 91久久国产香蕉熟女| 不卡的视频在线观看|