it-roy-ru.com

Добавить зависимость в Maven

Как взять файл JAR, который у меня есть, и добавить его в систему зависимостей в Maven 2? Я буду поддерживать эту зависимость, и моему коду нужен этот jar в пути к классам, чтобы он компилировался.

132
Milhous

Вам придется сделать это в два этапа:

1. Дайте вашему JAR идентификатор группы, artifactId и версию и добавьте их в свой репозиторий.

Если у вас нет внутреннего репозитория, и вы просто пытаетесь добавить свой JAR в свой локальный репозиторий, вы можете установить его следующим образом, используя любой произвольный groupId/artifactIds:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Вы также можете развернуть его в своем внутреннем репозитории, если он у вас есть, и хотите сделать его доступным для других разработчиков в вашей организации. Я просто использую веб-интерфейс моего репозитория для добавления артефактов, но вы должны быть в состоянии сделать то же самое, используя mvn deploy:deploy-file ....

2. Обновите зависимые проекты для ссылки на этот JAR.

Затем обновите зависимость в pom.xml проектов, использующих JAR, добавив следующее к элементу:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>
139
Jack Leow

Вы также можете указать зависимость не в репозитории Maven. Может быть полезно, когда не существует центрального репозитория maven для вашей команды или если у вас есть CI сервер

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>
93
Frederic Morin

На самом деле, изучая это, я думаю, что все эти ответы неверны. Ваш вопрос вводит в заблуждение из-за нашего уровня понимания maven. И я говорю наше, потому что я только знакомлюсь с maven.

В Eclipse, когда вы хотите добавить jar-файл в свой проект, обычно вы загружаете jar-файл вручную и затем помещаете его в lib каталог. С Maven, вы не делаете это таким образом. Вот что вы делаете:

  • Перейти к mvnrespoitory
  • Найдите библиотеку, которую хотите добавить
  • Скопируйте оператор dependency в свой pom.xml
  • перестроить через mvn

Теперь maven подключится и загрузит jar вместе со списком зависимостей и автоматически разрешит любые дополнительные зависимости, которые могли иметь jar. Так что если jar также нуждается в регистрации общего доступа, она также будет загружена.

45
Kieveli

Я бы сделал это:

  1. добавьте зависимость, как вам нравится в вашем pom:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
    
  2. запустите mvn install, он попытается скачать банку и потерпит неудачу. В процессе, он даст вам полную команду установки jar с сообщением об ошибке. Скопируйте эту команду и запустите ее! просто да ?!

14
user40032

Я предполагаю, что вы спрашиваете, как выдвинуть зависимость в "известный репозиторий", а не просто спрашиваете, как обновить POM.

Если да, то это это то, что вы хотите прочитать.

И для любого, кто хочет настроить внутренний сервер репозитория, посмотрите здесь (половина проблемы с использованием Maven 2 - это поиск документов)

3
kdgregory