Maven教程3(依賴管理)
Maven教程2(Eclipse配置及maven項目)
Maven項目,依賴,構建配置,以及構件:所有這些都是要建模和表述的對象。這些對 象通過一個名為項目對象模型(Project Object Model, POM)的XML文件描述。這個POM 告訴Maven它正處理什麽類型的項目,如何修改默認的行為來從源碼生成輸出。同樣 的方式,一個Java Web應用有一個web.xml文件來描述,配置,及自定義該應用,一個 Maven項目則通過一個 pom.xml文件定義。該文件是Maven中一個項目的描述性陳述;也 是當Maven構建項目的時候需要理解的一份“地圖”。
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坐標
1.2 dependency
一個dependency標簽表示一個maven坐標
1.3groupId
團體,公司,小組,組織,項目,或者其它團體。團體標識的約定是,它以創建這個項目的組織名稱的逆向域名(reverse domain name)開頭。來自Sonatype的項目有一個以com.sonatype開頭的groupId,而Apache Software的項目有以org.apache開頭的groupId,一個maven坐標必須包含一個groupId必須的
1.4artifactId
在groupId下的表示一個單獨項目的唯一標識符。比如我們的tomcat, commons等。不要在artifactId中包含點號(.) ,必須的
1.5version
一個項目的特定版本。發布的項目有一個固定的版本標識來指向該項目的某一個特定的版本。而正在開發中的項目可以用一個特殊的標識,這種標識給版本加上一個"SNAPSHOT"的標記。 雖然項目的打包格式也是Maven坐標的重要組成部分,但是它不是項目唯一標識符的一個部分。一個項目的 groupId:artifactId:version使之成為一個獨一無二的項目;你不能同時有一個擁有同樣的groupId, artifactId和version標識的項目。必須的
1.6scope
依賴範圍
依賴範圍|編譯有效|測試有效|運行時有效|打包有效|例子
--|--|--|--|--|--
Complie|√|√|√|√|spring-core
test|×|√|×|×|Junit
provided|√|√|×|×|servlet-api
runtime|×|√|√|√|JDBC驅動
system|√|√|×|×|本地maven倉庫
之外的類庫
1.7構建索引
構建索引便於在maven本地倉庫中檢索 window --> show --> other -->maven
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(私服)
Maven教程3(依賴管理)