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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

maven传递依赖

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven传递依赖 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 1. 依賴傳遞
    • 2. 什么是依賴沖突
    • 3. 怎么解決
    • 4. 項目聚合

maven是一個項目管理的工具,從項目的構建到項目開發,再到項目的測試,項目上線,都可一鍵管理。

1. 那么,還有maven是如何管理項目中所用到的jar版本沖突,在傳遞依賴時,怎么解決? 2. 如何創建父子依賴的項目?

1. 依賴傳遞

在maven中,依賴是可以傳遞的,假設存在三個項目,分別是項目A,項目B以及項目C。 假設C依賴B,B依賴A,那么我們可以根據maven項目依賴的特征不難推出項目C也依賴A。

2. 什么是依賴沖突

由于依賴傳遞現象的存在,特定情況下會造成依賴沖突。


spring-context 依賴了spring-beans

3. 怎么解決

1. 使用maven提供的依賴調解原則 第一聲明者優先原則在 pom 文件中定義依賴,以先聲明的依賴為準。其實就是根據坐標導入的順序來確定最終使用哪個傳遞過來的依賴路徑近者優先原則在 pom 文件定義依賴,以路徑近者為準。 2. 排除依賴使用exclusions標簽將傳遞過來的依賴排除出去 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency> 3. 鎖定版本采用直接鎖定版本的方法確定依賴jar包的版本,版本鎖定后則不考慮依賴的聲明順序或依賴的路徑,以鎖定的版本為準添加到工程中,此方法在企業開發中經常使用版本鎖定的使用方式:第一步:在dependencyManagement標簽中鎖定依賴的版本第二步:在dependencies標簽中聲明需要導入的maven坐標pom文件中使用dependencyManagement標簽進行依賴jar的版本鎖定,并不會真正將jar包導入到項目中,只是對這些jar的版本進行鎖定。項目中使用哪些jar包,還需要在dependencies標簽中進行聲明dependencies標簽需要導入依賴時只需要指定groupId和artifactId,無須再指定version 即創建父子項目,springboot就是典型的父子依賴的項目。

4. 項目聚合

項目聚合父項目子項目1子項目2...
  • 父項目,鎖定版本
  • <?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 父項目版本信息 --><groupId>cn.bitqian</groupId><artifactId>parent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>parent</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- spring版本抽取 --><spring-version>5.0.10.RELEASE</spring-version><mybatis-version>2.1.3</mybatis-version></properties><!-- 父項目的依賴管理 --><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring-version}</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-version}</version></dependency></dependencies></dependencyManagement><!--子項目,這兩個小模塊在下面創建完了才有的。 --><modules><module>child01</module><module>child02</module></modules> </project>

    有一個坑,父項目打包的方式必須是pom, 而且,eclipse創建完成后會包莫名其妙的錯誤… 解決如下。

  • child01,骨架是quick start

  • <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><!-- 父項目 --><parent><groupId>cn.bitqian</groupId><artifactId>parent</artifactId><version>0.0.1-SNAPSHOT</version></parent><!-- 當前項目 的版本信息 --><groupId>cn.bitqian.child01</groupId><artifactId>child01</artifactId><version>0.0.0.1-SNAPSHOT</version><name>child01</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 無需寫版本號,因為依賴傳遞,引用了父項目中的依賴 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></dependency> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies> </project>
  • child02 就不演示了,根模塊01一樣,只不過是選的webapp作為骨架。
  • 總結

    以上是生活随笔為你收集整理的maven传递依赖的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。