Як використовувати Maven pom для завантаження файлів jar лише у певний каталог?


78

Чи є спосіб завантажити залежності з файлу pom.xml до вказаної папки в Java? Я можу запустити команду maven з Java, і я отримав повідомлення про завантаження, але я не знаю, де maven зберігає ці бібліотеки? Як я можу завантажити ці залежності до певної папки?

Відповіді:


115

Погляньте на плагін залежностей Maven, зокрема на мету. У розділі використання описано, як робити саме те, що ви хочете. copy-dependencies

Для цього з командного рядка просто виконайте:

$ mvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR

Я стикаюся з дивною проблемою з цим методом, він завантажив файл .pom для основної залежності, але для своїх залежностей (транзитивних залежностей) завантажив відповідні банки. Я щось роблю не так?
jmng

Примітка, у Windows використовуйтеmvn dependency:copy-dependencies "-DoutputDirectory=OUTPUT_DIR"
AndrWeisR

11

Як пояснено тут , ви можете використовувати плагін maven-dependency-plugin: отримайте для цього.

Наприклад, якщо ви хочете завантажити org.apache.hive:hive-common:2.1.1у свою локальну папку, виконайте це:

mvn dependency:get -Ddest=./ -Dartifact=org.apache.hive:hive-common:2.1.1

Якщо ви хочете завантажити останню 3.0.0-SNAPSHOT:tar.gzверсію com.orientechnologies:orientdb-community-gremlinзі https://oss.sonatype.org/content/repositories/snapshotsсховища знімків, виконайте це:

mvn dependency:get -Ddest=./ -DremoteRepositories=sonatype-nexus-snapshots::::https://oss.sonatype.org/content/repositories/snapshots -Dartifact=com.orientechnologies:orientdb-community-gremlin:3.0.0-SNAPSHOT:tar.gz

Ви можете використовувати, -Dartifact=org.apache.hive:hive-common:LASTESTщоб отримати останню версію.
Matthieu

[ПОПЕРЕДЖЕННЯ] Параметр призначення / призначення застарілий: він зникне у наступній версії.
Артем Яковлєв

6

Додайте щось подібне до наступного до pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <configuration>
        <outputDirectory>
            ${project.build.directory}
        </outputDirectory>
    </configuration>
</plugin>

Потім запустіть mvn clean dependency:copy-dependenciesвиконувати копію. Поєднайте це з плагіном збірки, і ви зможете упакувати все в автономний архів для розповсюдження.


Я перейшов ${project.build.directory}на main\java\resources\libsбудівництво своєї місцевої бібліотеки. Дякую! Примітка: тут мій шлях відносно usr.dir(кореня проекту), але він може бути і абсолютним, наприклад C:\Mydir. Чудово!
WesternGun

2
  1. Перейдіть на цей сайт: http://jar-download.com/online-maven-download-tool.php

  2. Вставте XML залежностей Maven

  3. Завантажте файли jar у форматі ZIP.


11
Я б утримався від завантаження .jars через сторінку третьої (четвертої?) Сторони, хто знає, що ще вони додають або як вони змінюють архіви (зловмисне програмне забезпечення)? sblundy дав більш пряму відповідь.
try-catch-нарешті

1

Maven зберігає все це у своєму місцевому сховищі Maven2. За замовчуванням він зберігатиме їх у домашньому каталозі користувача у каталозі, який називається сховищем.

Ви можете використовувати ціль плагіна maven-dependency, яка називається copy, щоб взяти всі залежності вашого проекту та помістити їх у папку.

http://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html


2
Чи є в Java будь-який інший спосіб копіювати залежності, оскільки я не пишу pom.xml, я просто запускаю його?
Feras Odeh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.