Додайте залежність у Мейвен


134

Як мені взяти наявний файл jar та додати його до системи залежностей у Maven 2? Я буду підтримувачем цієї залежності, і мій код потребує цього jar на шляху до класу, щоб він компілювався.

Відповіді:


139

Це потрібно зробити в два етапи:

1. Дайте JAR групуId, 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>

3
Чи можете ви додати більше деталей щодо розгортання? У нас є внутрішній сховище, і я хочу розгорнути свій локальний встановлений файл jar до цього сховища, щоб інші розробники та наш сервер збирання також отримали банку.
Kieveli

Ця відповідь має отримати всі лайки! Я використовував це для успішного додавання залежностей для своїх головних проектів і від Google App Engine, і від Heroku.
Лео С Хань

93

Ви також можете вказати залежність не в сховищі 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?
Jayen

45

Власне, розслідуючи це, я вважаю, що всі ці відповіді є невірними. Ваше питання вводить в оману через наш рівень розуміння maven. І я кажу наше, бо я просто знайомлюсь maven.

В Eclipse, якщо ви хочете додати файл фляги в свій проект, як правило , ви завантажуєте банку вручну , а потім помістіть його в Lib каталогу. З Maven ти не робиш це так. Ось що ви робите:

  • Перейдіть у mvnrepository
  • Шукайте бібліотеку, яку ви хочете додати
  • Скопіюйте dependencyзаяву у своєpom.xml
  • відновити через mvn

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


5
Я використовую Spring Tool Suite (побудований на Eclipse). Після кроків 1 і 2 вище рішення: 1. Відкрийте pom.xml у редакторі STS, натисніть на вкладку "Залежності" внизу 2. Клацніть "Додати" в групі залежностей 3. Скопіюйте / вставте інформацію про залежність вкладки "Maven" у вікно браузера ( groupId, artifactId, версія) у відповідні поля у спливаючому вікні «Вибрати залежність» у STS 4. Клацніть OK 5. Зберегти pom.xml Після збереження каталог мого Maven на жорсткому диску та налаштування залежності maven в STS оновлюються протягом декількох секунд. Ви можете редагувати .xml безпосередньо, але використання інструменту може допомогти уникнути проблем із форматом XML.
Кріс Р

2
Це дійсно кращий спосіб робити речі, але є ситуації, коли цього не можна зробити (наприклад, власна банка не в mvnrepository). У такому випадку вам знадобиться спосіб додати його "вручну", і в цьому випадку інша відповідь матиме рішення.
Грім

Можливо також, що задане питання було менш питанням для початківців. Я вкладаю це для людей, які хочуть щось зробити без належних фраз, які походять від часу, проведеного в роботі з Мейвен. (Як я був у той час)
Kieveli

KISS Дякую, я прочитав, що це еквівалент C # Nuget на Java, але я намагався зрозуміти, яку кнопку натиснути або cmd для запуску. Не точно 1: 1, але робить роботу.
Терранс

Як відновити проект у Maven in intelleJ?
Ірфан Насім

14

Я б це зробив:

  1. додайте залежність, як вам подобається, у свою пом:

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

  2. запустити mvn installспробує завантажити банку і не вдасться. У процесі він дасть вам повну команду встановити банку з повідомленням про помилку. Скопіюйте цю команду і запустіть її! легко ?!


3

Я припускаю, що ви запитуєте, як перенести залежність на "відоме сховище", а не просто запитуєте, як оновити свою POM.

Якщо так, то це те, що ви хочете прочитати.

А для всіх, хто хоче налаштувати внутрішній сервер сховищ, дивіться тут (половина проблеми з використанням Maven 2 - це пошук документів)


Я хотів би сам підтримувати залежність. Це власна бібліотека.
Milhous
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.