Wie verwende ich Maven Pom, um JAR-Dateien nur in ein bestimmtes Verzeichnis herunterzuladen?


78

Gibt es eine Möglichkeit, Abhängigkeiten von einer pom.xml-Datei in einen angegebenen Ordner in Java herunterzuladen? Ich kann den Befehl maven über Java ausführen und habe Download-Nachrichten erhalten, weiß aber nicht, wo maven diese Bibliotheken speichert? Wie kann ich diese Abhängigkeiten in einen bestimmten Ordner herunterladen?

Antworten:


114

Schauen Sie sich das Abhängigkeits-Plugin von maven an, insbesondere das Ziel. Im Verwendungsabschnitt wird beschrieben, wie Sie genau das tun, was Sie möchten. copy-dependencies

Um dies über die Befehlszeile zu tun, gehen Sie einfach wie folgt vor:

$ mvn dependency:copy-dependencies -DoutputDirectory=OUTPUT_DIR

Ich habe ein seltsames Problem mit dieser Methode. Sie hat eine .pom-Datei für die Hauptabhängigkeit heruntergeladen, aber für ihre Unterabhängigkeiten (die transitiven Abhängigkeiten) hat sie die richtigen Jars heruntergeladen. Mache ich etwas falsch?
jmng

Beachten Sie, dass Sie unter Windowsmvn dependency:copy-dependencies "-DoutputDirectory=OUTPUT_DIR"
AndrWeisR

11

Wie hier erklärt , können Sie das Maven-Dependency-Plugin verwenden: get for this.

Wenn Sie beispielsweise org.apache.hive:hive-common:2.1.1in Ihren lokalen Ordner herunterladen möchten , führen Sie Folgendes aus:

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

Wenn Sie die neueste 3.0.0-SNAPSHOT:tar.gzVersion von com.orientechnologies:orientdb-community-gremlinaus dem https://oss.sonatype.org/content/repositories/snapshotsSnapshots-Repository herunterladen möchten , führen Sie Folgendes aus:

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

Sie können verwenden -Dartifact=org.apache.hive:hive-common:LASTEST, um die neueste Version zu erhalten.
Matthieu

Der Parameter [WARNING] destination / dest ist veraltet: Er wird in zukünftigen Versionen nicht mehr angezeigt.
Artem Yakovlev

5

Fügen Sie pom.xml etwas Ähnliches hinzu:

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

Führen Sie dann aus mvn clean dependency:copy-dependencies, um die Kopie auszuführen. Kombinieren Sie dies mit dem Assembly-Plugin und Sie können alles zur Verteilung in ein eigenständiges Archiv packen.


Ich wechselte ${project.build.directory}zu main\java\resources\libs, um meine lokale Bibliothek aufzubauen. Vielen Dank! Hinweis: Hier ist mein Pfad relativ zum usr.dir(Projektstamm), kann aber auch absolut sein C:\Mydir. Großartig!
WesternGun

2
  1. Gehen Sie zu dieser Site: http://jar-download.com/online-maven-download-tool.php

  2. Fügen Sie das Maven-Abhängigkeits-XML ein

  3. Laden Sie die JAR-Dateien als ZIP herunter.


11
Ich würde es unterlassen, .jars über eine Website eines Drittanbieters (Vierten?) Herunterzuladen. Wer weiß, was sie sonst noch hinzufügen oder wie sie Änderungen an den Archiven (Malware) vornehmen? sblundy gab eine direktere Antwort.
Try-Catch-Endlich

1

Maven speichert all dies in seinem lokalen Maven2-Repository. Standardmäßig werden sie in Ihrem Benutzer-Ausgangsverzeichnis unter einem Verzeichnis namens Repository gespeichert.

Sie können das Ziel des Maven-Dependency-Plugins namens copy verwenden, um alle Abhängigkeiten Ihres Projekts zu übernehmen und in einem Ordner abzulegen.

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


2
Gibt es in Java eine andere Möglichkeit, Abhängigkeiten zu kopieren, da ich die pom.xml nicht schreibe, sondern sie nur ausführe?
Feras Odeh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.