第四章 Maven-依賴管理

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在執行構建時,將不會下載存儲被排除的依賴項
相關文章
相關標籤/搜索