Frage Alle Maven-Abhängigkeiten in ein Verzeichnis NICHT im Repository herunterladen?


Ich begann, mein Projekt in maven zu konvertieren, weil ich eine Bibliothek verwenden musste, die nur über Maven in binärer Form verteilt war, aber nachdem ich meinen Kopf viel zu lange gegen die Wand geschlagen hatte, beschloss ich, mich nicht mehr zu verletzen und einfach zu benutzen Ameise. Ich möchte einfach das Jar und all seine transitiven Abhängigkeiten in ein Verzeichnis meiner Wahl herunterladen, damit ich sie einfach in meinen SCM einchecken kann, wie ich es normalerweise genieße, und wieder ein glückseliger Entwickler sein kann.
Irgendwelche Ideen, wie man das leicht macht?


92
2017-10-26 19:54


Ursprung


Antworten:


maven dependency plugin kann möglicherweise Ihr Problem lösen.

Wenn Sie eine haben pom erstellt mit all Ihren Projektabhängigkeiten angegeben, alles, was Sie tun müssten, ist auszuführen mvn dependency:copy-dependencies und du wirst finden target/dependencies Ordner gefüllt mit allen Abhängigkeiten, einschließlich transitive.


200
2017-10-27 06:05



Erstelle ein ivy.xml Datei, um die Abhängigkeiten Ihres Projekts aufzulisten:

<ivy-module version="2.0">
    <info organisation="org.demo" module="demo"/>
    <configurations defaultconfmapping="default"/>
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6"/>
        ..
    </dependencies>
</ivy-module>

Das Herunterladen dieser Jars und ihrer transitiven Abhängigkeiten kann jetzt auf zwei Arten erfolgen.

Befehlszeile

Efeu kann als ein gelaufen werden Befehlszeilenprogramm. Das folgende Beispiel wird in ein lokales "lib" -Verzeichnis heruntergeladen:

java -jar ivy-2.2.0.jar -ivy ivy.xml -retrieve "lib/[artifact].[ext]"

ANT bauen

Efeu wird am besten verwendet, wenn es in Ihren ANT-Build integriert wird. Das folgende Beispielziel lädt die jars in ein lokales lib-Verzeichnis herunter und generiert einen HTML-Bericht für die Abhängigkeitsanalyse.

<target name="retrieve" description="Retrieve dependencies locally">
    <ivy:retrieve pattern="${lib.dir}/[artifact].[ext]"/>

    <ivy:report todir="${report.dir}" graph="false"/>
</target>

19
2017-10-26 20:36



Beyogen auf @ Raghuram Antwort, ich finde ein Tutorial auf Projektabhängigkeiten kopieren, Gerade:

  1. Öffne dein Projekt pom.xml Datei und finde das:

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
    
  2. Dann ersetzen Sie die <plugins> ... </plugins> mit:

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    
  3. Und rufe maven in der Kommandozeile an mvn dependency:copy-dependencies

Nach Abschluss wird der Ordner erstellt target/dependency in allen jarAbhängigkeiten von dem aktuellen Verzeichnis, in dem die pom.xml Leben.


6
2018-05-07 19:46



Ich habe endlich herausgefunden, wie man Maven benutzt. Erstellen Sie in Eclipse ein neues Maven-Projekt.

Laden Sie Maven herunter, extrahieren Sie das Archiv, fügen Sie das hinzu /bin Ordner zu Pfad.

Überprüfen Sie die Installation über die Befehlszeile, indem Sie sie ausführen mvn -v (Druckversion und Java-Installationspfad)

Wechseln Sie in den Projektstammordner (wo pom.xml befindet) und führen:

mvn dependency:copy-dependencies 

Alle JAR-Dateien werden heruntergeladen /target/dependency.

So legen Sie ein anderes Ausgabeverzeichnis fest:

mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"

Jetzt ist es möglich, dieses Maven-Projekt für alle Dependency-Downloads wiederzuverwenden, indem Sie die pom.xml ändern

Fügen Sie jars zu java project hinzu, indem Sie den Pfad erstellen -> Build-Pfad konfigurieren -> Bibliotheken -> JARs hinzufügen ..


3
2018-01-17 14:59



Ich habe den nächsten Befehl gefunden

mvn dependency:copy-dependencies -Dclassifier=sources

Hier maven.apache.org


2
2018-05-26 15:47



Bitte überprüfen Sie, ob Sie einige Konfigurationsdateien haben ${MAVEN_HOME}/conf Verzeichnis wie settings.xml. Diese Dateien überschreiben die Einstellungen von .m2 Ordner und deshalb Repository-Ordner von .m2 möglicherweise nicht sichtbar oder verworfen.


0
2017-08-29 08:59