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.
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:
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)
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 :)
(...) 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:
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.
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
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
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
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?
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.
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:
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
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.
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.
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).
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.
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.
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.
In IntelliJ IDEA können Sie Artefaktquellen beim Importieren automatisch herunterladen, indem Sie die Option Quellen automatisch herunterladen aktivieren:
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.
Antworten:
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
quelle
mvn dependency:resolve -Dclassifier=javadoc
IntelliJ bemerkt IDEA automatisch die Javadocs, was sehr schön ist.Konfigurieren und Ausführen des Maven-Eclipse-Plugins (z. B. über die Befehlszeile
mvn eclipse:eclipse
)quelle
mvn eclipse:eclipse
wenn Sie diese zur POM-Datei hinzufügen?M2_REPO
Datei 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 BibliothekenWenn 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 :
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: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.
quelle
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
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
quelle
Mit dem Maven-Ideen-Plugin für IntelliJ Idea können Sie festlegen, ob Quellen und Java-Dokumente aufgelöst und heruntergeladen werden sollen
quelle
Verwenden Sie zum Herunterladen von Artefakten
Für Groovy-Quellen wäre dies
Für Groovys Javadoc würden Sie verwenden
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.quelle
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'.
quelle
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
quelle
In Eclipse
pom.xml
Run As
->Maven generate-sources
, um die Quelle standardmäßig im Ordner .m2 zu generieren
Voraussetzung:
Maven sollte mit Eclipse konfiguriert werden.
quelle
In Eclipse - klicken Sie auf das Projekt und dann:
.
quelle
Sie können, wenn sie hochgeladen werden. Im Allgemeinen werden sie als "Frameworkname-Versionsquelle (n)" bezeichnet.
quelle
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ählen
Download 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.quelle
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 .
quelle
Wenn Sie die groupId und die aritifactId kennen , können Sie eine solche Download-URL generieren.
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!
quelle
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.
quelle
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.
quelle
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.
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:
Referenz: Einführung in Spring Boot Starter
quelle
In IntelliJ IDEA können Sie Artefaktquellen beim Importieren automatisch herunterladen, indem Sie die Option Quellen automatisch herunterladen aktivieren:
Settings
→Build, Execution, Deployment
→Build Tools
→Maven
→Importing
quelle
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.
quelle