Holen Sie sich Quell-JAR-Dateien, die an Eclipse für von Maven verwaltete Abhängigkeiten angehängt sind

176

Ich verwende Maven (und die Maven Eclipse-Integration), um die Abhängigkeiten für meine Java-Projekte in Eclipse zu verwalten. Die automatische Download-Funktion für JAR-Dateien aus den Maven-Repositories spart Zeit. Leider enthält es keine API-Dokumentation und keinen Quellcode.

Wie kann ich Maven so einrichten, dass automatisch auch die Quell- und Javadoc-Anhänge abgerufen und ordnungsgemäß bei Eclipse registriert werden?

Thilo
quelle
Verwandte Frage, wie man Quellen und Javadoc immer herunterlädt, wenn man maven verwendet: stackoverflow.com/questions/5780758/…
Flow

Antworten:

226

Ich bin sicher, dass das m2eclipse Maven-Plugin für Eclipse - umgekehrt - das kann. Sie können es so konfigurieren, dass sowohl die Quelldateien als auch Javadoc automatisch für Sie heruntergeladen werden.

Dies wird erreicht, indem Sie unter Fenster> Einstellungen> Maven die Optionen "Artefaktquellen herunterladen" und "Artefakt JavaDoc herunterladen" aktivieren.

Screenshot der Maven-Einstellungen

mrembisz
quelle
Ja, ich habe gerade angefangen, m2eclipse zu verwenden, und es braucht ein Auto davon (und viele andere Dinge, die Maven).
Thilo
44
Keine dieser Antworten ist eine Antwort. Warum werden sie gewählt? Ich konnte die Quellen herunterladen, indem ich bei gedrückter Ctrl-Taste auf das Projekt in der Navigatoransicht klickte und "m2 Maven" -> "Quellen herunterladen" auswählte. Ich konnte dann mit der Befehlstaste (Mac) auf die Klasse klicken, um zur verknüpften Quelle zu navigieren.
Alex Worden
8
Es scheint, dass Eclipse nicht sofort versucht, die Quell- / Javadoc-JARs abzurufen, wenn die kompilierte JAR bereits heruntergeladen wurde. Wenn Sie ein POM ändern, das eine Abhängigkeit von den POMs enthält, für die ich die Quelle / Javadoc in Eclipse verwenden möchte, und das POM speichern, wird die Quelle / Javadoc für die Abhängigkeiten heruntergeladen, selbst wenn sich die kompilierte JAR bereits im Maven-Repository-Cache befindet.
Francis Gagné
13
@Francis - Nachdem Sie die obige Änderung vorgenommen haben, klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie "Maven> Projekt aktualisieren ...". Dadurch werden Ihre Quellgläser heruntergeladen.
Carbontax
3
Ist es möglich, anstatt Quellen für alle Abhängigkeiten herunterzuladen, nur für einige Abhängigkeiten herunterzuladen, indem Sie sie in pom zusammen mit der Abhängigkeit selbst angeben. Kann dies über ein inneres Tag im Abhängigkeitstag oder etwas Ähnliches erfolgen?
Nanosoft
127
mvn eclipse:eclipse -DdownloadSources=true

oder

mvn eclipse:eclipse -DdownloadJavadocs=true

oder Sie können beide Flags hinzufügen, wie Spencer K betont.

Darüber hinaus ist der =trueTeil nicht erforderlich, sodass Sie ihn verwenden können

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs
Stephen Denne
quelle
8
oder beides! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Dies funktioniert nur, wenn die Quelle und die Javadocs für das Repo bereitgestellt wurden, von dem Sie herunterladen. Manchmal werden sie nicht wie der Frühling bereitgestellt.
Spencer Kormos
2
Der Frühling liefert sie jetzt.
Robin Green
Beachten Sie, dass diese Antwort älter als 10 Jahre ist. Verwenden Sie das m2e-Plugin in Eclipse, anstatt dass Maven Eclipse-Konfigurationsdateien erstellt.
Thorbjørn Ravn Andersen
71

Die anderen Antworten auf diese Arbeit, aber wenn Sie vermeiden möchten, dass Sie sich Befehlszeilenargumente merken müssen, können Sie auch einfach die Konfiguration downloadSources und downloadJavadocs zum Abschnitt maven-eclipse-plugin Ihrer pom.xml hinzufügen:

<project>
    ...
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                    ... other stuff ...
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>
überdenken
quelle
Kann ich dies auf eine Abhängigkeitsstufe einstellen?
Marcorossi
@marcorossi Entschuldigung, ich bin mir nicht sicher, ob das möglich ist.
Überdenken Sie den
Ich bin nicht davon überzeugt, dass dies angemessen ist. Sicherlich sind Quell- und Javadoc-Download-Einstellungen eine Benutzerpräferenz und kein Problem auf Projektebene? In meiner Antwort unten erfahren Sie, wie Sie dies in die settings.xmlDatei einfügen.
Duncan Jones
Ich habe folgende Warnung erhalten: [WARNUNG] 'build.plugins.plugin.version' für org.apache.maven.plugins: Das Maven-Eclipse-Plugin fehlt. Um dies zu beheben, können Sie unter <artifactId> Folgendes hinzufügen: <version> 2.9 </ version>
Christiaan
16

Ich ziehe es vor, keine Quell- / Javadoc-Download-Einstellungen in die Projektdatei aufzunehmen pom.xml, da dies meiner Meinung nach Benutzereinstellungen und keine Projekteigenschaften sind. Stattdessen platziere ich sie in einem Profil in meiner settings.xmlDatei:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <profiles>
    <profile>
      <id>sources-and-javadocs</id>
      <properties>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>true</downloadJavadocs>
      </properties>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>sources-and-javadocs</activeProfile>
  </activeProfiles>
</settings>
Duncan Jones
quelle
1
Ich habe diese settings.xml in .m2 kopiert, aber Quellen und Javadocs werden nicht kopiert. Der folgende Befehl, der explizit in der CLI angegeben ist, überträgt jedoch die Quellen und Javadocs: MVN-Abhängigkeit: Quellenabhängigkeit: Auflösung -Dclassifier = Javadoc Irgendwelche Gedanken?
Arun Gupta
Vielleicht funktioniert das, aber bitte erklären Sie, wie das Maven Eclipse Plugin diese Konfigurationseinstellungen finden soll. Sie denken, es sucht nach globalen Immobilien?
Chrisinmtown
9

Klicken Sie mit der rechten Maustaste auf Projekt -> Maven -> Quellen herunterladen

sumeet
quelle
3
Alle sagten, wie man es aktiviert, nicht wie man Maven dazu bringt, die Quellen herunterzuladen! nach Aktivierung der Option
Chad
8

Wenn sich die Quellgläser im lokalen Repository befinden und Sie die Eclipses Maven-Unterstützung verwenden, werden die Quellen automatisch angehängt. Sie können mvn dependency:sourcesalle Quellgläser für ein bestimmtes Projekt herunterladen. Ich bin mir nicht sicher, wie ich das mit der Dokumentation machen soll.

Winterhart
quelle
Das hat bei mir funktioniert. Nach dem Ausführen mvn dependency:sourceskonnte ich mich in Eclipse durchklicken, um die Quelle zu lesen. Kein zusätzliches Mucken mit m2e erforderlich. Um die Javadocs herunterzuladen, tun Sie dies mvn dependency:sources -Dclassifier=javadoc.
Mat Gessel
4

Wenn Sie Meclipse verwenden, tun Sie dies

Fenster -> Maven -> Artefaktquellen herunterladen (Häkchen auswählen)

(Wenn Sie weiterhin ein Quellfenster zum Anhängen erhalten, klicken Sie auf die Schaltfläche Datei anhängen und schließen Sie das Fenster zum Anhängen der Quelle. Wenn Sie das nächste Mal versuchen, die Quelle anzuzeigen, wird die richtige Quelle geöffnet.)

Surajz

surajz
quelle
3

Es gibt auch eine ähnliche Frage , die diese Frage beantwortet und Beispiel-POM-Einstellungen enthält.

andrel
quelle
3

Ich habe Windows-> Pref ..-> Maven ausprobiert, aber es hat nicht geklappt. Daher habe ich mit dem Befehl mvn eclipse einen neuen Klassenpfad erstellt: eclipse -DdownloadSources = true und den Arbeitsbereich einmal aktualisiert. voila .. Quellen wurden beigefügt.

Der Eintrag des Quellglases ist im Klassenpfad verfügbar. Daher löste ein neuer Build das Problem ...

om39a
quelle
Mit Ihrer Lösung kann ich auswählen, für welches Modul ich Quellen erhalten möchte. CD einfach in dieses Modul und erstellen mit "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Danke :)
vishwarajanand
2

In meiner Version von Eclipse-Helios mit m2Eclipse gibt es keine

window --> maven --> Download Artifact Sources (select check)

Unter Fenster befindet sich nur "neues Fenster", "neuer Editor", "offene Perspektive" usw.

Wenn Sie mit der rechten Maustaste auf Ihr Projekt klicken, wählen Sie maven -> Quellen herunterladen

Nichts passiert. Es werden keine Quellen heruntergeladen, keine POM-Dateien aktualisiert, kein Fenster mit der Frage, welche Quellen angezeigt werden.

Mvn xxx außerhalb von Eclipse auszuführen ist gefährlich - einige Befehle funktionieren nicht mit m2ecilpse - ich habe das einmal gemacht und das gesamte Projekt verloren, musste Eclipse neu installieren und von vorne beginnen.

Ich bin immer noch auf der Suche nach einer Möglichkeit, Ecilpse und Maven dazu zu bringen, die Quelle externer Gläser wie Servlet-API zu finden und zu verwenden.

Flügelmutter
quelle
2

Wenn Sie pom für maven-eclipse-plugin so ändern, dass es source / javadoc enthält, gelten Sie nur für neue Abhängigkeiten, die pom hinzugefügt werden. Wenn wir vorhandene Abhängigkeiten beantragen müssen, müssen wir mvn dependency: sources ausführen. Ich habe das überprüft.

bnguyen82
quelle
2

Manchmal reicht es nicht aus, die Download-Quelle / Javadoc in den Eclipse-Maven-Einstellungen zu überprüfen. Falls maven sie aus irgendeinem Grund nicht herunterladen konnte (ein Netzwerkausfall?), Erstellt maven einige * .lastUpdated-Dateien und wird dann nie wieder heruntergeladen. Meine empirische Lösung bestand darin, das Artefaktverzeichnis aus .m2 / repository zu löschen und den Eclipse-Arbeitsbereich mit aktivierter Downloadquelle / javadoc neu zu starten und Projekte beim Start ebenfalls zu aktualisieren. Nach dem Neustart des Arbeitsbereichs können möglicherweise einige Projekte als fehlerhaft markiert werden, während der Eclipse-Fortschritt heruntergeladen wird. Anschließend wird jeder Fehler behoben. Vielleicht ist dieses Verfahren nicht so "wissenschaftlich", aber für mich ist es gelungen.

user17417
quelle
1

Ich habe die POM-Konfiguration zum Maven-Eclipse-Plugin hinzugefügt, um Quell- und Javadocs herunterzuladen, aber ich denke / hoffe, dass dies für neue Abhängigkeiten passieren wird, nicht für bestehende.

Für vorhandene Abhängigkeiten habe ich im Paket-Explorer bis zu "Maven-Abhängigkeiten" gesucht und mit der rechten Maustaste auf commons-lang-2.5.jar geklickt und Maven | ausgewählt Quellen herunterladen und ... nichts schien zu passieren (kein Fortschrittsbalken oder Hinweis darauf, dass etwas getan wurde). Es wurde jedoch heruntergeladen, da ich jetzt in commons-lang zur Quelle springen kann.

einzigartig72
quelle
1

Überdenken vorgeschlagen, das Setup im POM zu verwenden:

<project>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
                ... other stuff ...
            </configuration>
        </plugin>
    </plgins>
</build>
...

Zuerst dachte ich, dies würde das Javadoc und die Quellen immer noch nicht anhängen (da ich es zuvor erfolglos mit dieser Option -DdownloadSources versucht habe).

Aber Überraschung - die .classpath-Datei erhält ihre Quellen und Javadoc, wenn sie die POM-Variante verwendet!

jhohlfeld
quelle
1

Für Indigo (und wahrscheinlich Helios) befinden sich die oben genannten Kontrollkästchen hier:

Fenster -> Einstellungen -> Maven

Chris Romine
quelle
0

Ich hatte ein ähnliches Problem, und die Lösung, die für mich am besten funktionierte, bestand darin, die Quelle in dieselbe JAR-Datei wie den kompilierten Code aufzunehmen (ein bestimmtes Verzeichnis in der JAR-Datei würde also sowohl Foo.javaals auch enthalten Foo.class). Eclipse ordnet die Quelle automatisch dem kompilierten Code zu und stellt JavaDoc automatisch aus der Quelle bereit. Dies ist natürlich nur hilfreich, wenn Sie das Artefakt steuern.

Dan R.
quelle
0

Nachdem Sie die Eigenschaften entweder auf Projektebene oder auf Benutzereigenschaften festgelegt haben, führen Sie einen Maven -> Projekt aktualisieren aus (Aktualisierung erzwingen). Es lädt die Quellen herunter

Arkabhi
quelle