第四章 Maven-依賴管理
阿新 • • 發佈:2021-08-12
一、依賴管理概述
除非專案特別小,通常一般專案都會依賴外部jar包。這些jar包管理是非常繁瑣的,jar包會依賴其他jar包,如果手工管理必須把所有這些jar都放到專案目錄下,並且確保這些jar包的版本是正確的。當專案變得越來越大時,這項工作將變得更加繁瑣。
使用Maven管理這些依賴的jar包,將大大簡化工作。可以在POM檔案中指定專案所依賴的外部庫以及版本,然後maven將下載這些jar包,並放入本地庫中。如果某些外部jar包需要其他jar包,maven也會下載。
在POM檔案的<dependencies>元素中指定專案依賴項。
二、依賴管理示例
# 示例: <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
三、傳遞依賴
一個依賴項依賴於其他依賴項,maven會傳遞這些依賴,把所有需要的依賴項都包含進來。
四、外部依賴
外部依賴是指在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所在的目錄,路徑的其餘部分與該目錄相對應。
五、快照依賴
快照依賴是指依賴項使用正在開發中的最新版本(快照版本),每次構建總是下載最新的快照版本。
如需使用某個版本的快照版本,版本號後附加`-SNAPSHOT`:
<dependency>
<groupId>com.qikegu.com</groupId>
<artifactId>mydependency</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
六、排除依賴
由於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在執行構建時,將不會下載儲存被排除的依賴項