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?

Feras Odeh
quelle

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
sblundy
quelle
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
Anthony O.
quelle
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.

Amar
quelle
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.

Uwe334
quelle
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

frankjl
quelle
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