Maven教程3(依賴管理)

Maven教程2(Eclipse配置及maven項目)java

Maven項目,依賴,構建配置,以及構件:全部這些都是要建模和表述的對象。這些對 象經過一個名爲項目對象模型(Project Object Model, POM)的XML文件描述。這個POM 告訴Maven它正處理什麼類型的項目,如何修改默認的行爲來從源碼生成輸出。一樣 的方式,一個Java Web應用有一個web.xml文件來描述,配置,及自定義該應用,一個 Maven項目則經過一個 pom.xml文件定義。該文件是Maven中一個項目的描述性陳述;也 是當Maven構建項目的時候須要理解的一份「地圖」。web

1.maven座標

<dependencies> 
	<!-- 由於是web項目因此須要servlet --> 
	<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>${servlet.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

1.1 dependencies

在dependencies標籤中添加須要依賴的jar對應的maven座標spring

1.2 dependency

一個dependency標籤表示一個maven座標apache

1.3groupId

團體,公司,小組,組織,項目,或者其它團體。團體標識的約定是,它以建立這個項目的組織名稱的逆向域名(reverse domain name)開頭。來自Sonatype的項目有一個以com.sonatype開頭的groupId,而Apache Software的項目有以org.apache開頭的groupId,一個maven座標必須包含一個groupId必須的api

1.4artifactId

在groupId下的表示一個單獨項目的惟一標識符。好比咱們的tomcat, commons等。不要在artifactId中包含點號(.) ,必須的tomcat

1.5version

一個項目的特定版本。發佈的項目有一個固定的版本標識來指向該項目的某一個特定的版本。而正在開發中的項目能夠用一個特殊的標識,這種標識給版本加上一個"SNAPSHOT"的標記。 雖然項目的打包格式也是Maven座標的重要組成部分,可是它不是項目惟一標識符的一個部分。一個項目的 groupId:artifactId:version使之成爲一個獨一無二的項目;你不能同時有一個擁有一樣的groupId, artifactId和version標識的項目。必須的dom

1.6scope

依賴範圍 依賴範圍|編譯有效|測試有效|運行時有效|打包有效|例子 --|--|--|--|--|-- Complie|||||spring-core test|×||×|×|Junit provided|||×|×|servlet-api runtime|×||||JDBC驅動 system|||×|×|本地maven倉庫
以外的類庫maven

1.7構建索引

構建索引便於在maven本地倉庫中檢索 window --> show --> other -->maven 在這裏插入圖片描述在這裏插入圖片描述 在這裏插入圖片描述在這裏插入圖片描述ide

2.依賴衝突

2.1衝突產生的緣由

graph LR A[a jar] -- 依賴 --> B((b jar)) B --依賴--> D[c jar 1.2版本]
graph LR A[a jar] -- 依賴 --> B((d jar)) B --依賴--> D[c jar 1.3版本]

上圖中a jar包經過b和d間接依賴到的c jar包版本不一致,出現了衝突 依賴關係|實例 --|-- 直接依賴|a和b的依賴關係 間接依賴|a和c的依賴關係 好比:測試

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-spring-plugin -->
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>2.3.24</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.2.4.RELEASE</version>
</dependency>

在這裏插入圖片描述

2.2依賴衝突解決

2.2.1第一優先聲明原則

先定義的先使用 在這裏插入圖片描述在這裏插入圖片描述

2.2.2路徑就近原則

直接聲明使用 在這裏插入圖片描述

2.2.3排除依賴

排除掉兩個衝突中的一個,那麼另外一個就天然使用了 在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

2.2.4版本依賴

在這裏插入圖片描述 上一篇:Maven教程2(Eclipse配置及maven項目) 下一篇:Maven教程4(私服)

相關文章
相關標籤/搜索