it-swarm.com.de

Laden Sie alle Maven-Abhängigkeiten in ein Verzeichnis, das sich NICHT im Repository befindet?

Ich fing an, mein Projekt in maven umzuwandeln, weil ich eine Bibliothek verwenden wollte, die in binärer Form nur über maven verteilt war. Nachdem ich jedoch den Kopf viel zu lange gegen die Wand geklopft hatte, beschloss ich, mich nicht mehr zu verletzen und einfach zu benutzen Ameise. Ich möchte, dass ich das Glas und alle seine transitiven Abhängigkeiten in ein Verzeichnis meiner Wahl herunterladen muss, damit ich es einfach in meinen SCM einchecken kann, wie es mir normalerweise Spaß macht, und wieder ein glücklicher Entwickler sein.
Irgendwelche Ideen, wie das einfach geht?

105
chubbsondubs

Das Maven-Abhängigkeits-Plugin kann möglicherweise Ihr Problem lösen.

Wenn Sie eine pom mit all Ihren Projektabhängigkeiten haben, müssen Sie sie nur ausführen

mvn dependency:copy-dependencies

und der target/dependencies-Ordner wird mit allen Abhängigkeiten gefüllt, einschließlich transitiv.

Hinzufügen von Gustavos Antwort von unten : Zum Herunterladen der Abhängigkeit sources können Sie verwenden

mvn dependency:copy-dependencies -Dclassifier=sources

(über Apache Maven Dependency Plugin doc ).

222
Raghuram

Erstellen Sie eine 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 Gläser und ihrer transitiven Abhängigkeiten kann jetzt auf zwei Arten erfolgen.

Befehlszeile

Ivy kann als Befehlszeilenprogramm ausgeführt werden. 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 ist. 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
Mark O'Connor

Basierend auf @Raghuram answer, finde ich ein Tutorial zu Projektabhängigkeiten kopieren , Nur:

  1. Öffnen Sie die pom.xml-Projektdatei und suchen Sie nach dieser Datei:

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
    
  2. Dann ersetzen Sie den <plugins> ... </plugins> durch:

    <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 rufen Sie Maven in der Kommandozeile auf mvn dependency:copy-dependencies

Anschließend wird der Ordner target/dependency in allen Abhängigkeiten von jar vom aktuellen Verzeichnis erstellt, in dem sich pom.xml befindet.

6
user

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

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

Überprüfen Sie die Installation von der Befehlszeile aus, indem Sie mvn -v ausführen (Version und Java-Installationspfad werden gedruckt).

Wechseln Sie in den Stammordner des Projekts (wo sich pom.xml befindet) und führen Sie Folgendes aus:

mvn dependency:copy-dependencies 

Alle JAR-Dateien werden in /target/dependency heruntergeladen. 

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 Downloads von Abhängigkeiten durch Ändern der Datei pom.xml erneut zu verwenden

Hinzufügen von JAR-Dateien zu Java-Projekten nach Buildpfad -> Buildpfad konfigurieren -> Bibliotheken -> JARs hinzufügen.

5
Baked Inhalf

Ich habe den nächsten Befehl gefunden

mvn dependency:copy-dependencies -Dclassifier=sources

hier maven.Apache.org

3
Gustavo

Bitte überprüfen Sie, ob sich einige Konfigurationsdateien im ${MAVEN_HOME}/conf-Verzeichnis wie settings.xml..__ befinden. Diese Dateien überschreiben die Einstellungen aus dem .m2-Ordner. Daher ist der Repository-Ordner aus .m2 möglicherweise nicht sichtbar oder verworfen.

0
MagGGG