Учебники

Maven — внешние зависимости

Как вы знаете, Maven осуществляет управление зависимостями, используя концепцию репозиториев. Но что произойдет, если зависимость не доступна ни в одном из удаленных репозиториев и центрального репозитория? Maven дает ответ для такого сценария, используя концепцию внешней зависимости .

Например, давайте внесем следующие изменения в проект, созданный в главе «Создание проекта Java».

  • Добавьте папку lib в папку src.

  • Скопируйте любую банку в папку lib. Мы использовали ldapjdk.jar , который является вспомогательной библиотекой для операций LDAP.

Добавьте папку lib в папку src.

Скопируйте любую банку в папку lib. Мы использовали ldapjdk.jar , который является вспомогательной библиотекой для операций LDAP.

Теперь структура нашего проекта должна выглядеть следующим образом:

структура проекта внешнего репозитория

Здесь у вас есть собственная библиотека, специфичная для проекта, которая является обычным случаем и содержит 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>

Посмотрите на второй элемент зависимости под зависимостями в вышеприведенном примере, который проясняет следующие ключевые понятия о внешней зависимости .

  • Внешние зависимости (расположение jar библиотеки) можно настроить в pom.xml так же, как и другие зависимости.

  • Укажите groupId так же, как имя библиотеки.

  • Укажите artifactId так же, как имя библиотеки.

  • Укажите область действия как систему.

  • Укажите системный путь относительно местоположения проекта.

Внешние зависимости (расположение jar библиотеки) можно настроить в pom.xml так же, как и другие зависимости.

Укажите groupId так же, как имя библиотеки.

Укажите artifactId так же, как имя библиотеки.

Укажите область действия как систему.

Укажите системный путь относительно местоположения проекта.

Надеюсь, теперь вы понимаете внешние зависимости и сможете указать внешние зависимости в своем проекте Maven.