Holen Sie sich Quell-JARs aus dem Maven-Repository

Antworten:

786

Maven Micro-Tipp: Holen Sie sich Quellen und Javadocs

Wenn Sie Maven in einer IDE verwenden, muss Ihre IDE häufig Quellcode und Javadocs für Ihre Bibliotheksabhängigkeiten auflösen. Es gibt einen einfachen Weg, um dieses Ziel zu erreichen.

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

Der erste Befehl versucht, den Quellcode für jede der Abhängigkeiten in Ihrer POM-Datei herunterzuladen.

Der zweite Befehl versucht, die Javadocs herunterzuladen.

Maven ist hier den Bibliotheksverpackern ausgeliefert. Einige von ihnen haben also keinen Quellcode und viele von ihnen haben keine Javadocs.

Wenn Sie viele Abhängigkeiten haben, ist es möglicherweise auch eine gute Idee, Einschlüsse / Ausschlüsse zu verwenden, um bestimmte Artefakte abzurufen. Mit dem folgenden Befehl werden beispielsweise nur die Quellen für die Abhängigkeit mit einer bestimmten Artefakt-ID heruntergeladen:

mvn dependency:sources -DincludeArtifactIds=guava

Quelle: http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/

Dokumentation: https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html

Alain O'Dea
quelle
10
Wo werden sie nach dem Herunterladen abgelegt?
James Moore
15
Sie werden im selben Verzeichnis wie die binären JARs unter M2_HOME abgelegt.
Alain O'Dea
19
Wenn Sie Eclipse verwenden, kann es hilfreich sein, anschließend auch "mvn eclipse: eclipse" auszuführen und dann Ihr Projekt in Eclipse zu aktualisieren. Dies erspart Ihnen das manuelle Anhängen von Quellen an jede Datei.
Unigeek
1
Ich kann die Quellen und Javadocs nach dem Herunterladen nicht finden. Ich habe jedes Verzeichnis unter M2_HOME
Patrick Kiernan
2
Nach mvn dependency:resolve -Dclassifier=javadocIntelliJ bemerkt IDEA automatisch die Javadocs, was sehr schön ist.
Jonik
89

Konfigurieren und Ausführen des Maven-Eclipse-Plugins (z. B. über die Befehlszeile mvn eclipse:eclipse)

   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
        </plugins>
    </build>
RobAu
quelle
Was meinst du? Meinen Sie damit, dass Quellen und Dokumente beim Ausführen heruntergeladen werden, mvn eclipse:eclipsewenn Sie diese zur POM-Datei hinzufügen?
Lii
3
Ja. So einfach ist das.
RobAu
@RobAu, wo wird die Quelle heruntergeladen, wird sie selbst oder woanders an das Projekt angehängt?
Jaskey
1
Es wird als JAR in Ihrer M2_REPODatei als xxxx-yy-sources.jar am selben Speicherort wie das normale JAR heruntergeladen . Es wird als Quellcode für das xxxx-yy-Glas in den Bibliotheken
angehängt
1
@KanagaveluSugumar Sie müssen das M2_REPO zur Sonnenfinsternis hinzufügen und dann einfach das Projekt aktualisieren.
RobAu
36

Wenn ein Projekt ein JAR der Projektquellen erstellt und es in einem Maven-Repository bereitstellt, finden Sie es :)

Nur zu Ihrer Information, Quellartefakte werden im Allgemeinen vom Maven-Source-Plugin erstellt . Dieses Plugin kann die Haupt- oder Testquellen eines Projekts in einem JAR-Archiv bündeln und, wie unter Konfigurieren des Quell- Plugins erläutert :

(...) Die generierte JAR-Datei wird nach dem Wert des finalNamePluszeichens "-sources" benannt, wenn es sich um die Hauptquellen handelt. Andernfalls wäre es finalNameplus "-test-sources", wenn es sich um die Testquellen handelt.

Der zusätzliche Text zur Beschreibung eines Artefakts (hier "-sources" oder "-test-sources") wird als Klassifikator bezeichnet.

Fügen Sie einfach das <classifier>Element hinzu, um eine Abhängigkeit von einem Artefakt zu deklarieren, das einen Klassifizierer verwendet. Zum Beispiel:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <classifier>sources</classifier>
</dependency>

Beachten Sie, dass Sie dies im Allgemeinen nicht tun. Die meisten IDEs unterstützen das Herunterladen von Quellen (und / oder JavaDoc) vom Hauptartefakt, ohne explizit eine Abhängigkeit von diesen zu deklarieren.

Beachten Sie schließlich auch, dass einige Repository-Suchmaschinen die Suche nach Artefakten mithilfe des Klassifikators ermöglichen (zumindest Nexus bei der erweiterten Suche). Siehe diese Suche zum Beispiel.

Pascal Thivent
quelle
19

Um eine bestimmte Quelle oder ein bestimmtes Javadoc herunterzuladen, müssen wir die GroupIds einfügen. Dies ist ein durch Kommas getrennter Wert, wie unten gezeigt

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=sources

Beachten Sie, dass die Klassifizierer nicht durch Kommas getrennt sind. Um das Javadoc herunterzuladen, müssen Sie den obigen Befehl noch einmal mit dem Klassifizierer als Javadoc ausführen

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc
Anver Sadhat
quelle
Ist es möglich, anstelle des Herunterladens von Quellen für alle Abhängigkeiten nur einige Abhängigkeiten herunterzuladen, indem Sie diese in pom zusammen mit der Abhängigkeit selbst angeben. Kann dies über ein inneres Tag im Abhängigkeitstag oder etwas Ähnliches erfolgen?
Nanosoft
18

Mit dem Maven-Ideen-Plugin für IntelliJ Idea können Sie festlegen, ob Quellen und Java-Dokumente aufgelöst und heruntergeladen werden sollen

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true
dev_doctor
quelle
Ist es möglich, anstelle des Herunterladens von Quellen für alle Abhängigkeiten nur einige Abhängigkeiten herunterzuladen, indem Sie diese in pom zusammen mit der Abhängigkeit selbst angeben. Kann dies über ein inneres Tag im Abhängigkeitstag oder etwas Ähnliches erfolgen?
Nanosoft
Dieses Plugin ist im Ruhestand
kiltek
14

Verwenden Sie zum Herunterladen von Artefakten

mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier

Für Groovy-Quellen wäre dies

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:sources

Für Groovys Javadoc würden Sie verwenden

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:javadoc

Dadurch wird das angegebene Artefakt normalerweise in Ihr lokales Maven-Repository gestellt $HOME/.m2/repository .

dependency:sources Lädt nur die Quellen der Projektabhängigkeiten herunter, nicht die Plugins-Quellen oder die in Plugins definierten Abhängigkeitsquellen.

Maddin
quelle
12

Informationen finden Sie in dieser verwandten Frage: Holen Sie sich Quell-JAR-Dateien, die an Eclipse für von Maven verwaltete Abhängigkeiten angehängt sind.
Wenn Sie das Eclipse-Maven- Plugin verwenden, verwenden Sie 'mvn eclipse: eclipse -DdownloadSources = true'.

Stefan De Boey
quelle
Dies ist die einzige Lösung, die für mich funktioniert hat. Ich benutze Eclipse Kepler. Da dies korrekte Verweise im .classpath macht . Wie die folgenden:
Aspdeepak
<classpathentry kind = "var" path = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0 -sources.jar ">
aspdeepak
Als ich der Antwort von @ RobAu folgte, wurden nur Hibernate Docs von Repo heruntergeladen, nicht Spring . Dann besuche ich den Link, den du bereitgestellt hast und folge @ mrembisz und ändere die Maven-Vorlieben und arbeite wie ein Zauber. Ich bekomme Spring Docs . @Stefan De Boey Danke, dass du das geteilt hast. +1.
OO7
9

Wenn Sie Eclipse verwenden, können Sie auch Einstellungen> Maven öffnen und Artefaktquellen herunterladen auswählen. Dadurch wird die Datei pom.xml intakt und Ihre Quellen oder Java-Dokumente (falls ausgewählt) bleiben nur für die Entwicklung direkt an Ihrem Computerstandort ~ / .m2 erhalten

Gabriel Ramirez
quelle
7

In Eclipse

  1. Klicken Sie mit der rechten Maustaste auf pom.xml
  2. Wählen Sie Run As-> Maven generate-sources
    , um die Quelle standardmäßig im Ordner .m2 zu generieren

Voraussetzung:

Maven sollte mit Eclipse konfiguriert werden.

bondkn
quelle
1
Beantwortet eine andere Frage. Bei dieser Frage geht es darum, Quell-JARs herunterzuladen, die sie nicht generieren.
Stephen C
5

In Eclipse - klicken Sie auf das Projekt und dann:

Geben Sie hier die Bildbeschreibung ein.

Witold Kaczurba
quelle
Ich habe bei der Einstellung "Eclipse Maven" die Option "Artefaktquellen herunterladen" deaktiviert, sodass nur das Glas heruntergeladen wird. Aber letztere, ich habe versucht, diese Lösung zum Herunterladen der Quelle zu verwenden, es schlug ohne Nachricht fehl. Ich habe den JAR-Ordner im lokalen Maven-Repository entfernt und das JAR erneut heruntergeladen. Dann wurde das Quell-JAR erfolgreich heruntergeladen. Ich denke, das liegt daran, dass das lokale Maven-Repository das JAR hat, daher kann ich diese Methode nicht zum Herunterladen der Quelle verwenden.
Frank
4

Sie können, wenn sie hochgeladen werden. Im Allgemeinen werden sie als "Frameworkname-Versionsquelle (n)" bezeichnet.

Bozho
quelle
4

NetBeans, Kontext-Klick

Klicken Sie in NetBeans 8 mit einem Maven-gesteuerten Projekt lediglich im Kontext auf das Listenelement der JAR-Datei der Abhängigkeit, an der Sie interessiert sind. WählenDownload Sources . Warten Sie einen Moment und NetBeans lädt den Quellcode automatisch herunter und installiert ihn, falls verfügbar.

Ebenso können Sie festlegen Download Javadoc, dass das Dokument lokal installiert wird. Anschließend können Sie im Editor auf einen Code im Kontext klicken und JavaDoc anzeigen.

Screenshot des Kontextmenüpunkts "Download Sources", der in einem von Maven betriebenen NetBeans 8-Projekt ausgewählt wurde

Basil Bourque
quelle
3

Basierend auf dem Betrachten der Maven-Konsole in Eclipse (Kepler) werden Quellen automatisch für eine Maven-Abhängigkeit heruntergeladen, wenn Sie versuchen, eine Klasse aus dieser Maven-Abhängigkeit in dem Editor zu öffnen, für den Sie die Quellen noch nicht heruntergeladen haben. Dies ist praktisch, wenn Sie nicht für alle Ihre Abhängigkeiten die Quelle abrufen möchten, aber nicht wissen, welche Sie im Voraus möchten (und Eclipse verwenden).

Am Ende habe ich den Ansatz von @ GabrielRamierez verwendet , werde aber in Zukunft den Ansatz von @ PascalThivent anwenden .

eebbesen
quelle
2

Wenn Sie die groupId und die aritifactId kennen , können Sie eine solche Download-URL generieren.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback-classic/

und Sie erhalten eine Seite wie diese, wählen Sie die Version, die Sie benötigen, genießen Sie es einfach! Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Senninha
quelle
1

Ich habe auch das Eclipse-Plugin verwendet, um das Projekt in den Eclipse-Arbeitsbereich zu bringen. Da ich an einem anderen Projekt gearbeitet habe, habe ich gesehen, dass es möglich ist, mit Eclipse zu arbeiten, aber ohne das Maven-Eclipse-Plugin. Dies erleichtert die Verwendung in verschiedenen Umgebungen und ermöglicht die einfache Verwendung von Maven over Eclipse. Und das ohne die pom.xml-Datei zu ändern.

Daher empfehle ich den Ansatz von Gabriel Ramirez.

eeezyy
quelle
0

Zum Debuggen können Sie auch einen "Java Decompiler" verwenden, z. B.: JAD und dekompilieren Sie die Quelle im laufenden Betrieb (obwohl die generierte Quelle niemals mit der Originalquelle identisch ist). Installieren Sie dann JAD als Plugin in Eclipse oder Ihrer bevorzugten IDE.

atom88
quelle
0

Maven-Repositorys bieten eine einfache Möglichkeit zum Herunterladen von Quellen.

Ich werde es anhand einer Demonstration für "Spring-Boot-Actuator-Autoconfigure" erklären.

  1. Gehen Sie zum Maven-Repository - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. Die Seite listet verschiedene Versionen auf. Klicken Sie auf die gewünschte Option, z. B. 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. Die Seite hat den Link "Alle anzeigen" neben "Dateien". Klicken Sie darauf - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. Auf der Seite werden verschiedene Dateien aufgelistet, einschließlich der für Quellen - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-sources.jar

Andernfalls können Sie das Repo von github jederzeit "git clone", sofern es vorhanden ist, und den spezifischen Code abrufen.

Wie von anderen erläutert, können Sie den Befehl "mvn dependency: sources" verwenden, um die JAR-Datei get and generate sources für die von Ihnen verwendete Abhängigkeit zu verwenden.

Hinweis: Einige Abhängigkeiten haben keine source.jar, da diese keinen Quellcode, sondern eine POM-Datei enthalten. zB Spring-Boot-Starter-Aktuator . Wie in diesem Fall:

Starter-POMs sind eine Reihe praktischer Abhängigkeitsbeschreibungen, die Sie in Ihre Anwendung aufnehmen können. Sie erhalten eine zentrale Anlaufstelle für alle Spring- und verwandten Technologien, die Sie benötigen, ohne den Beispielcode durchsuchen und viele Abhängigkeitsbeschreibungen kopieren und einfügen zu müssen.

Referenz: Einführung in Spring Boot Starter

Manojkumar Khotele
quelle
0

In IntelliJ IDEA können Sie Artefaktquellen beim Importieren automatisch herunterladen, indem Sie die Option Quellen automatisch herunterladen aktivieren:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

Geben Sie hier die Bildbeschreibung ein

Saikat
quelle
0

Wenn Sie die Quell-JAR-Datei für eines der Artefakte manuell suchen möchten, gehen Sie zum Speicherort des Maven-Repositorys für das jeweilige Artefakt und klicken Sie in Dateien auf "Alle anzeigen". Sie können die Quell-JAR-Datei finden.

Naresh Muthyala
quelle