2009-07-02 15 views
3

Bei der Arbeit bin ich meine Zehen in Projektmanagement Abhängigkeiten mit Maven. Wir verwenden Apache Archiva (1.2.1) als lokales Repository und Proxy. Ich füge Artefakte für Open-Source-Projekte hinzu, die nicht in einem öffentlichen Repository veröffentlicht werden. Ich habe gelernt, dass die Quellenuse the Classifier field auf Seitezu veröffentlichen. Die Quellen werden dann neben dem Jar und Pom aufgeführt, wenn ich das Repository durchsuche.Publishing Artefakte mit Quellen auf Archiva

Aber wenn ich meine Maven Abhängigkeiten aktualisieren, bekomme ich nur die jar und pom aus dem Repository. Mir ist aufgefallen, dass Quellen auch fehlen, wenn die Archiva für mich die Downloads von anderen öffentlichen Repositories vertreibt. Ich habe auf den Administrativseiten von Archiva keine Konfigurationsoptionen gefunden, um die Quellen zu bedienen ... Was fehlt mir?

Update: Mir fehlte die Tatsache, dass Artefaktquellen manuell heruntergeladen werden müssen. I.e. Der Maven-Client muss sie anfordern, was durch die Befehlszeilenoption -DdownloadSources=true gesteuert wird. Maven Integration for Eclipse hat eine Voreinstellung, um sie immer wie in Resolving artifact sources beschrieben herunterzuladen. Archiva versorgt dann die Quellen für lokale Artefakte oder proxies die Anfrage an entfernte Repositories und speichert die Quellen für zukünftige Anfragen zwischen.

+0

Dies löste ein Nicht-Archiva-Problem für mich. Bitte fügen Sie dieser Frage einige Tags hinzu, um das Auffinden zu erleichtern: maven jar source –

Antwort

3

Archiva bedient die Quellen, aber Maven fordert sie standardmäßig nicht an. Ich weiß, da ich auch Archiva als mein Maven Repo benutze. Wie fordern Sie die Quellen an?

Wenn Sie Eclipse verwenden

  • können Sie mvn eclipse:eclipe -DdownloadSources=true im Projektverzeichnis laufen;
  • können Sie die Maven Integration for Eclipse installieren.

Beide sollten die Quellen zurückgeben, wenn sie verfügbar sind.

+0

Ich verwende die Maven-Integration für Eclipse. Wenn Artefakte aus öffentlichen Repositorys installiert wurden, wurden sie mit Quellen heruntergeladen. Von Archiva kommen sie ohne Quellen. Es ist zumindest das, was ich beschuldige aufgrund meiner Beobachtung ... Gleiche Ergebnisse von der Befehlszeile. Bedeutet das, dass ich maven (in meiner settings.xml) unterrichten muss, um immer Quellen anzufordern? Wie? – Palimondo

+0

Das ist ziemlich seltsam. Irgendein Fehler in der archiva.log Datei? Was ist mit dem manuellen Anfordern der Quelldatei - z.B. Laden Sie im Browser $ archiva/repo/internal/$ groupId/$ artifactId/$ version/$ artifactId- $ version-sources.jar? (Nicht 100% des Pfades) –

+0

Ahmm ... Ich bin dumm. Mir ist nicht aufgefallen, dass ich die Quellen manuell anfordern muss oder die Präferenz in den Voreinstellungen von Maven Integration für Eclipse ändern muss. Dann funktioniert alles. Ich war verwundert, dass einige Artefakte in meinem lokalen Repository Quellen enthielten (zum Beispiel junit, joda-time), ohne dass ich das jemals manuell spezifizierte. Vielleicht hat ein Archetyp-Plugin das für mich getan ... – Palimondo

0

Die Quellen sind nicht erforderlich, um Kompilierungs-/Laufzeitabhängigkeiten zu erfüllen. Wenn Sie Quellen mit Ihrer App bündeln wollten, würden Sie eine Abhängigkeit mit einer Quelle angeben. Oder Sie verwenden einen Plug-in wie Assembly, um sie aus Archiva zu greifen.