1、依賴管理概述
除非項目特別小,一般通常項目都會依賴外部jar包。這些jar包管理是很是繁瑣的,jar包會依賴其餘jar包,若是手工管理必須把全部這些jar都放到項目目錄下,而且確保這些jar包的版本是正確的。當項目變得愈來愈大時,這項工做將變得更加繁瑣。
使用Maven管理這些依賴的jar包,將大大簡化工做。能夠在POM文件中指定項目所依賴的外部庫以及版本,而後maven將下載這些jar包,並放入本地庫中。若是某些外部jar包須要其餘jar包,maven也會下載。
在POM文件的<dependencies>元素中指定項目依賴項。
2、依賴管理示例
# 示例:
<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>com.test.demo</groupId>
<artifactId>mybatis-demo</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>mybatis demo </name>
<url>http://www.qikegu.com</url>
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13-beta-2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
上面配置了2個依賴項。每一個依賴項都由groupId、artifactId和版本描述。
當Maven執行這個POM文件時,若是本地庫中沒有這2個依賴項,maven將從中央庫去下載它們並放入本地庫。
有時中央庫也沒有須要的依賴項,如一些第三方jar包,開發人員能夠本身手動下載,而後放到本地庫中。本地庫的jar包目錄必須匹配<dependency>中的配置,目錄格式是:
groupId/artifactId/version
groupId中若是有點(.)替換成斜槓(/),如上面jsoup jar包所在的目錄是:
MAVEN_REPOSITORY_ROOT/org/jsoup/jsoup/1.11.3
3、傳遞依賴
一個依賴項依賴於其餘依賴項,maven會傳遞這些依賴,把全部須要的依賴項都包含進來。
4、外部依賴
外部依賴是指在maven中央庫,本地庫,遠程庫都不存在的jar包,如本地硬盤中的jar包。
可經過以下方式配置外部依賴項:
<dependency>
<groupId>com.qikegu.com</groupId>
<artifactId>mydependency</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\war\WEB-INF\lib\mydependency.jar</systemPath>
</dependency>
groupId和artifactId都設置爲依賴項的名稱,scope元素值被設置爲system。systemPath元素被設置爲指向包含依賴項的JAR文件的位置,${basedir}指向POM所在的目錄,路徑的其他部分與該目錄相對應。
5、快照依賴
快照依賴是指依賴項使用正在開發中的最新版本(快照版本),每次構建老是下載最新的快照版本。
如需使用某個版本的快照版本,版本號後附加`-SNAPSHOT`:
<dependency>
<groupId>com.qikegu.com</groupId>
<artifactId>mydependency</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
6、排除依賴
因爲Maven會傳遞依賴,有時可能包含不須要的依賴項,例如,某個較老的jar可能與當前使用的Java版本不兼容。爲了解決這個問題,Maven容許你排除特定的依賴項:
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- 聲明排除的依賴項 -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
maven在執行構建時,將不會下載存儲被排除的依賴項