Maven外部依賴


正如大家所了解的那樣,Maven確實使用 Maven 庫的概念作依賴管理。但是,如果依賴是在遠端儲存庫和中央儲存庫不提供那會怎麼樣? Maven 提供為使用外部依賴的概念,就是應用在這樣的場景中的。

舉一個例子,讓我們在 Maven建立專案 這一章節中建立的專案做以下的修改。

  • 新增 lib 檔案夾到 src 檔案夾

  • 複製任何的 jar 到 lib 檔案夾。這裡使用的是 ldapjdk.jar,這是 LDAP 操作的輔助庫。

現在我們的專案結構看起來應該類似下面這樣:

external repository project structure

在這裡,在專案中指定自己所用的庫,它可以包含 jar 檔案,但是可能無法在任何 Maven 儲存庫找到,那麼需要從部下載。如果程式碼使用這個 Maven 庫但沒有辦法找到,那麼 Maven 構建將會失敗,因為它在編譯階段使用指這個庫無法下載或無法找到

要處理這種情況,需要新增外部依賴項,如使用下列方式在 Maven 的 pom.xml 。

<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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.bank</groupId>
   <artifactId>consumerBanking</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>consumerBanking</name>
   <url>http://maven.apache.org</url>

   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>ldapjdk</groupId>
         <artifactId>ldapjdk</artifactId>
         <scope>system</scope>
         <version>1.0</version>
         <systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
      </dependency>
   </dependencies>

</project>

再看上面例子中的第二個依賴元素(dependency),它清除以下有關外部依賴的重要概念。

  • 外部依賴(JAR庫的位置)可以在 pom.xml 中組態為與其他依賴的方式相同;

  • 指定 groupId 同樣作為庫的名稱;

  • 指定 artifactId 同樣作為庫的名稱

  • 指定範圍的系統;

  • 指定相系統專案的位置;

通過本章節的學習,希望現在你清楚了解外部依賴,能夠在 Maven 專案指定外部依賴。