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

127

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

Теги:
macos
dependencies
maven-2

5 ответов

131
Лучший ответ

Вам нужно сделать это в два этапа:

1. Дайте вашему JAR файл groupId, 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>
  • 0
    Я попробую.
  • 3
    Можете ли вы добавить более подробную информацию о развертывании? У нас есть внутренний репозиторий, и я хочу развернуть мой локальный установленный файл jar в этом репозитории, чтобы другие разработчики и наш сервер сборки также получили jar.
Показать ещё 1 комментарий
96

Вы также можете указать зависимость не в репозитории 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>
  • 4
    Могу ли я зависеть от другого файла POM вместо банки?
41

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

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

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

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

  • 5
    Я использую Spring Tool Suite (построен на Eclipse). После шагов 1 и 2 в приведенном выше решении: 1. Откройте pom.xml в редакторе STS, нажмите вкладку «Зависимости» внизу 2. Нажмите «Добавить» в группе зависимостей 3. Скопируйте / вставьте информацию о зависимостях вкладки «Maven» из окна браузера ( groupId, artifactId, version) в соответствующие поля во всплывающем окне «Выбор зависимости» в STS 4. Нажмите OK. 5. Сохраните pom.xml. После сохранения папка maven на жестком диске и параметр зависимости maven в STS обновляются в течение нескольких секунд. Вы можете редактировать XML-файл напрямую, но использование инструмента может помочь избежать проблем с форматом XML.
  • 2
    Это действительно предпочтительный способ сделать что-то, но есть ситуации, когда вы не можете этого сделать (например, проприетарный jar не в mvnrepository). В этом случае вам нужен способ добавить его «вручную», и в этом случае другой ответ будет иметь решение.
Показать ещё 5 комментариев
13

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

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

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>
    

  • Запустите maven - он попытается загрузить банку и провалиться. В этом процессе даст вам полную команду по установке фляги с сообщением об ошибке. Скопируйте эту команду и запустите ее! Легко ли?!

3

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

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

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

  • 0
    Я хотел бы сохранить зависимость самостоятельно. Это внутренняя библиотека.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню