Ottieni file jar di origine allegati a Eclipse per dipendenze gestite da Maven


176

Sto usando Maven (e Maven Eclipse Integration) per gestire le dipendenze per i miei progetti Java in Eclipse. La funzione di download automatico per i file JAR dai repository Maven consente di risparmiare tempo reale. Sfortunatamente, non include la documentazione API e il codice sorgente.

Come posso configurare Maven per ottenere automaticamente anche gli allegati sorgente e javadoc e registrarli correttamente con Eclipse?


Domanda correlata che chiede come scaricare sempre fonti e javadoc quando si utilizza Maven: stackoverflow.com/questions/5780758/…
Flow

Risposte:


226

Sono sicuro che il plugin m2eclipse Maven per Eclipse - viceversa - può farlo. Puoi configurarlo per scaricare automaticamente sia i file sorgente che javadoc.

Questo si ottiene andando in Finestra> Preferenze> Maven e selezionando le opzioni "Scarica fonti artefatto" e "Scarica artefatto JavaDoc".

Schermata delle preferenze di Maven


Sì, ho appena iniziato a usare m2eclipse, e ci vuole auto di questo (e molte altre cose fatte).
Thilo,

44
Nessuna di queste risposte è una risposta. Perché vengono votati? Sono stato in grado di scaricare le fonti facendo clic tenendo premuto il tasto Ctrl sul progetto nella vista Navigatore e scegliendo "m2 Maven" -> "Scarica fonti". Sono stato quindi in grado di fare clic sui comandi (mac) sulla classe per passare alla fonte collegata.
Alex Worden,

8
Sembra che se il JAR compilato è già stato scaricato, Eclipse non tenterà di ottenere immediatamente i JAR di origine / Javadoc. Sembra che la modifica di un POM contenente una dipendenza dai POM per i quali voglio il sorgente / Javadoc in Eclipse e il salvataggio del POM scarichi il sorgente / Javadoc per le dipendenze, anche se il JAR compilato è già nella cache del repository Maven.
Francis Gagné,

13
@Francis - Dopo aver apportato le modifiche sopra riportate, fai clic con il pulsante destro del mouse sul tuo progetto e seleziona "Maven> Aggiorna progetto ..." Ciò causerà il download dei tuoi vasetti di origine.
carbontax,

3
Invece di scaricare fonti per tutte le dipendenze, è possibile scaricare solo per alcune dipendenze specificandolo in pom insieme alla dipendenza stessa, può b tramite un tag interno nel tag di dipendenza o qualcosa di simile?
nanosoft,

127
mvn eclipse:eclipse -DdownloadSources=true

o

mvn eclipse:eclipse -DdownloadJavadocs=true

oppure puoi aggiungere entrambi i flag, come sottolinea Spencer K.

Inoltre, la =trueparte non è necessaria, quindi è possibile utilizzare

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

8
o entrambi! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Funziona solo se sorgente e javadocs sono stati forniti al repository da cui stai scaricando. A volte non vengono forniti come la primavera.
Spencer Kormos l'

2
La primavera ora li fornisce.
Robin Green,

Nota che questa risposta ha più di 10 anni. Utilizzare il plug-in m2e in eclipse anziché fare in modo che maven crei file di configurazione di eclipse.
Thorbjørn Ravn Andersen,

71

Le altre risposte su questo lavoro, ma se vuoi evitare di dover ricordare gli argomenti della riga di comando, puoi anche semplicemente aggiungere a downloadSources e downloadJavadocs config nella sezione maven-eclipse-plugin del tuo pom.xml:

<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>

sarei in grado di impostare questo a livello di dipendenza?
marcorossi,

@marcorossi Siamo spiacenti, non sono sicuro che sia possibile.
ripensare l'

Non sono convinto che sia appropriato. Sicuramente le impostazioni di download di origine e Javadoc sono una preferenza dell'utente, non una preoccupazione a livello di progetto? Vedi la mia risposta qui sotto per come inserire questo nel settings.xmlfile.
Duncan Jones,

Ho ricevuto questo avviso: [ATTENZIONE] 'build.plugins.plugin.version' per org.apache.maven.plugins: manca maven-eclipse-plugin. Per risolvere il problema, puoi aggiungere qualcosa di simile sotto <artifactId>: <version> 2.9 </version>
Christiaan,

16

Preferisco non inserire le impostazioni di download di origine / Javadoc nel pom.xmlfile di progetto poiché ritengo che si tratti di preferenze dell'utente, non di proprietà del progetto. Invece, li inserisco in un profilo nel mio settings.xmlfile:

<?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>

1
Ho copiato questo settings.xml in .m2, tuttavia fonti e javadocs non vengono copiati. Il seguente comando esplicitamente sulla CLI porta su fonti e javadocs: dipendenza mvn: dipendenza fonti: risolvere -Dclassificatore = javadoc Qualche idea?
Arun Gupta,

Forse questo funziona, ma per favore spiega, come si suppone che il plugin eclissi di Maven trovi queste impostazioni di configurazione? Pensi che cerchi proprietà globali?
chrisinmtown,

9

Fare clic destro sul progetto -> maven -> scaricare fonti


3
Tutti hanno detto come abilitarlo, non come ottenere maven per scaricare le fonti! dopo aver abilitato l'opzione
Chad

8

Se i barattoli di origine si trovano nel repository locale e si sta utilizzando il supporto di Eclipses, le fonti vengono automaticamente collegate. È possibile eseguire mvn dependency:sourcesper scaricare tutti i vasetti di origine per un determinato progetto. Non sono sicuro di come fare lo stesso con la documentazione.


Questo ha funzionato per me. Dopo l'esecuzione mvn dependency:sources, sono stato in grado di fare clic su Eclipse per leggere l'origine. Non sono necessari ulteriori mucking con m2e. Per scaricare i javadocs che fai mvn dependency:sources -Dclassifier=javadoc.
Mat Gessel,

4

Se stai usando meclipse, fallo

finestra -> maven -> Scarica fonti artefatto (seleziona spunta)

(Se ottieni ancora la finestra di origine del collegamento, fai clic sul pulsante Allega file e chiudi la finestra del collegamento. La prossima volta che provi a vedere la fonte, si aprirà la fonte corretta)

Surajz



3

Ho provato windows-> pref ..-> Maven Ma non funzionava. Quindi ho creato un nuovo percorso di classe con il comando mvn eclipse: eclipse -DdownloadSources = true e aggiornato l'area di lavoro una volta. voilà .. Le fonti sono state allegate.

La voce del jar di origine è disponibile nel percorso di classe. Quindi la nuova build ha risolto il problema ...


Con la tua soluzione, posso scegliere il modulo per cui voglio ottenere le fonti. È sufficiente inserire il CD in quel modulo e compilare con "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Grazie :)
vishwarajan e il

2

nella mia versione di Eclipse helios con m2Eclipse non c'è

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

Sotto la finestra c'è solo "nuova finestra", "nuovo editor" "prospettiva aperta" ecc.

Se fai clic con il pulsante destro del mouse sul tuo progetto, scegli Maven -> Scarica fonti

Non succede niente. nessuna fonte viene scaricata, nessun file pom viene aggiornato, nessuna finestra si apre chiedendo quali fonti.

Fare mvn xxx al di fuori di eclipse è pericoloso - alcuni comandi non funzionano con m2ecilpse - L'ho fatto una volta e ho perso l'intero progetto, ho dovuto reinstallare eclipse e ricominciare da zero.

Sto ancora cercando un modo per ottenere ecilpse e maven per trovare e usare la fonte di barattoli esterni come servlet-api.


2

La modifica di pom per maven-eclipse-plugin per includere source / javadoc si applica solo per le nuove dipendenze aggiunte a pom. Se dobbiamo richiedere dipendenze esistenti, dobbiamo eseguire mvn dependency: fonti. Ho controllato questo.


2

Controllare la fonte di download / javadoc nella preferenza Eclipse-Maven, a volte non è sufficiente. Nel caso in cui maven non sia riuscito a scaricarli per qualche motivo (un blackout di rete?), Maven crea alcuni file * .lastUpdated, quindi non li scaricherà mai più. La mia soluzione empirica era eliminare la directory degli artefatti da .m2 / repository e riavviare l'area di lavoro eclipse con il download source / javadoc controllato e anche l'aggiornamento dei progetti all'avvio. Dopo aver riavviato lo spazio di lavoro, forse alcuni progetti possono essere contrassegnati per errore, mentre si sta scaricando l'avanzamento dell'eclissi, quindi qualsiasi errore verrà cancellato. Forse questa procedura non è così "scientifica", ma per me ha avuto successo.


1

Ho aggiunto la configurazione pom al plugin maven-eclipse per scaricare source e javadocs, ma immagino / spero che accadrà per nuove dipendenze, non per quelle esistenti.

Per le dipendenze esistenti, ho esplorato Package Explorer in "Dipendenze Maven" e ho fatto clic con il tasto destro su commons-lang-2.5.jar, selezionato Maven | Scarica fonti e ... non sembrava accadere nulla (nessuna barra di avanzamento o indicazione che stesse facendo qualcosa). Tuttavia, è stato scaricato come sono in grado di saltare alla fonte in comune ora.


1

pensiero eccessivo suggerito usando il setup nel pom:

<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>
...

Per prima cosa ho pensato che questo non avrebbe ancora collegato javadoc e le fonti (come ho provato senza successo con quell'opzione -DdownloadSources prima).

Ma sorpresa: il file .classpath sta ottenendo i suoi sorgenti e javadoc collegati quando si utilizza la variante POM!


1

Per Indigo (e probabilmente Helios) le caselle di controllo sopra menzionate si trovano qui:

Finestra -> Preferenze -> Maven


0

Ho avuto un problema simile e la soluzione che ha funzionato meglio per me è stata quella di includere l'origine nello stesso jar del codice compilato (quindi una data directory nel jar includerebbe sia Foo.javae Foo.class). Eclipse associa automaticamente l'origine al codice compilato e fornisce automaticamente JavaDoc dall'origine. Ovviamente, questo è utile solo se controlli l'artefatto.


0

Dopo aver impostato le proprietà a livello di progetto o proprietà utente, eseguire un Maven -> Aggiorna progetto (Forza aggiornamento). Scarica le fonti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.