Ottieni JAR di origine dal repository Maven


Risposte:


785

Maven Micro-Tip: Ottieni fonti e Javadocs

Quando si utilizza Maven in un IDE, è spesso necessario che l'IDE risolva il codice sorgente e Javadocs per le dipendenze della libreria. C'è un modo semplice per raggiungere questo obiettivo.

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

Il primo comando tenterà di scaricare il codice sorgente per ciascuna delle dipendenze nel file pom.

Il secondo comando tenterà di scaricare Javadocs.

Maven è in balia dei confezionatori di biblioteche qui. Quindi alcuni di loro non avranno pacchetti di codice sorgente e molti di loro non avranno Javadocs.

Nel caso abbiate molte dipendenze, potrebbe anche essere una buona idea usare inclusioni / esclusioni per ottenere artefatti specifici, il seguente comando scaricherà ad esempio solo i sorgenti per la dipendenza con un artefatto specifico:

mvn dependency:sources -DincludeArtifactIds=guava

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

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


10
Dove li inserisce una volta scaricati?
James Moore,

15
Li mette nella stessa directory dei JAR binari in M2_HOME.
Alain O'Dea,

19
Se stai usando eclipse, può essere utile fare anche "mvn eclipse: eclipse" in seguito e quindi aggiornare il tuo progetto in eclipse - ti salva dal collegare manualmente le fonti a ciascun file.
unigeek

1
Non riesco a trovare le fonti e i javadocs dopo che sono stati scaricati. Ho controllato tutte le directory in M2_HOME
Patrick Kiernan

2
Dopo che mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA ha notato automaticamente il javadocs, il che è molto bello.
Jonik,

89

Configurazione ed esecuzione del plug-in maven-eclipse, (ad esempio dalla riga di comando 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>

Cosa intendi? Vuoi dire che fonti e documenti vengono scaricati quando si esegue mvn eclipse:eclipsese si aggiunge questo al file POM?
Lii,

3
Sì. Semplice come quella.
RobAu,

@RobAu, dove verrà scaricata la fonte, verrà allegata al progetto da sola o da qualche altra parte?
Jaskey,

1
Verrà scaricato come jar nel tuo M2_REPOcome xxxx-yy-sources.jar, nella stessa posizione del normale jar. Verrà allegato come codice sorgente per il jar xxxx-yy nelle librerie
RobAu,

1
@KanagaveluSugumar è necessario aggiungere M2_REPO per eclissare, quindi aggiornare semplicemente il progetto.
RobAu,

36

Se un progetto crea un barattolo delle fonti del progetto e lo distribuisce in un repository maven, lo troverai :)

Solo FYI, i manufatti dei sorgenti sono generalmente creati dal plugin maven-source . Questo plugin può raggruppare le fonti principali o di test di un progetto in un archivio jar e, come spiegato in Configurazione del plugin sorgente :

(...) Il file jar generato sarà nominato dal valore del finalName"sorgente" più se è la fonte principale. Altrimenti, sarebbe finalNamepiù "-test-sources" se sono le fonti di test.

Il testo aggiuntivo che è stato dato per descrivere un artefatto ("-sources" o "-test-sources" qui) è chiamato classificatore.

Per dichiarare una dipendenza da un artefatto che utilizza un classificatore, è sufficiente aggiungere l' <classifier>elemento. Per esempio:

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

Si noti che generalmente non si esegue questa operazione, la maggior parte degli IDE fornisce supporto per il download di origini (e / o JavaDoc) dal manufatto principale senza dichiarare esplicitamente una dipendenza da esse.

Infine, nota anche che alcuni motori di ricerca del repository consentono la ricerca di artefatti usando il classificatore (almeno Nexus fa con la ricerca avanzata). Vedi questa ricerca per esempio.


18

Il plug- in Maven Idea per IntelliJ Idea consente di specificare se i sorgenti e il documento java devono essere risolti o scaricati

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true

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

Questo plugin è ritirato
kiltek il

18

Per scaricare una fonte specifica o javadoc dobbiamo includere GroupIds - È un valore separato da virgola come mostrato di seguito

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

Si noti che il classificatore non è separato da virgola, per scaricare il javadoc è necessario eseguire il comando sopra ancora una volta con il classificatore come javadoc

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

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

14

Per scaricare qualsiasi uso di artefatto

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

Per le fonti Groovy questo sarebbe

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

Per il javadoc di Groovy useresti

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

Questo inserisce il dato artefatto nel tuo repository Maven locale, cioè di solito $HOME/.m2/repository.

dependency:sources scarica solo le fonti delle dipendenze del progetto, non le fonti dei plugin né le fonti delle dipendenze definite all'interno dei plugin.


12

puoi trovare informazioni in questa domanda correlata: Ottieni file jar di origine allegati a Eclipse per dipendenze gestite da Maven
se usi il plug-in eclipse maven quindi usa 'mvn eclipse: eclipse -DdownloadSources = true'


Questa è l'unica soluzione che ha funzionato per me. Sto usando Eclipse Kepler. Dal momento che questo fa riferimenti adeguati in .classpath . Come il seguente:
aspdeepak,

<classpathentry kind = "var" path = "M2_REPO / redis / client / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / client / jedis / 2.6.0 / jedis-2.6.0 -sources.jar ">
aspdeepak il

Quando ho seguito la risposta @ RobAu, solo i documenti Hibernate vengono scaricati dal repository, non Spring . Poi visito il link che hai fornito e seguito @ mrembisz e apporto modifiche alle preferenze di Maven e funziona come un incantesimo. Ricevo i documenti di primavera . @Stefan De Boey Grazie per averlo condiviso. +1.
OO7,

9

se stai usando eclipse potresti anche aprire Preferenze> Maven e selezionare Scarica fonti artefatto, questo lascerebbe intatto il pom.xml e manterrà i tuoi sorgenti o documenti java (se selezionati) solo per lo sviluppo proprio nella posizione della tua macchina ~ / .m2


7

In Eclipse

  1. Fare clic destro su pom.xml
  2. Selezionare Run As-> Maven generate-sources
    genererà l'origine per impostazione predefinita nella cartella .m2

Pre-requisito:

Maven dovrebbe essere configurato con Eclipse.


1
Rispondi a una domanda diversa. Questa domanda riguarda il download dei JAR di origine e non la loro generazione.
Stephen C,

5

In eclissi - fai clic sul progetto quindi:

inserisci qui la descrizione dell'immagine.


Ho deselezionato 'scarica risorse artefatto' con l'impostazione di eclipse maven, quindi scarica solo il vaso. Ma in seguito, ho provato a utilizzare questa soluzione per scaricare la fonte, non è riuscita senza alcun messaggio. Ho rimosso la cartella jar nel repository locale maven e scaricato di nuovo il jar, quindi il jar di origine è stato scaricato correttamente. Penso che ciò sia dovuto al fatto che il repository locale di Maven ha il jar, quindi non posso usare questo metodo per scaricare il sorgente.
franco,

4

Puoi, se sono caricati. Generalmente sono chiamati "frameworkname-version-source (s)"


4

NetBeans, clic contestuale

In NetBeans 8 con un progetto guidato da Maven, fai semplicemente clic con il pulsante destro del mouse sull'elemento dell'elenco di file jar della dipendenza a cui sei interessato. Scegli Download Sources. Attendi qualche istante e NetBeans scaricherà e installerà automaticamente il codice sorgente, se disponibile.

Allo stesso modo puoi scegliere Download Javadocdi installare il documento localmente. Quindi è possibile fare clic contestualmente su un codice nell'editor e scegliere di vedere JavaDoc.

schermata dell'elemento del menu di scelta rapida "Download Sources" scelto in un progetto NetBeans 8 guidato da Maven


3

In base alla visione della console Maven in Eclipse (Kepler), le fonti verranno scaricate automaticamente per una dipendenza Maven se si tenta di aprire una classe da detta dipendenza Maven nell'editor per il quale non si hanno già le fonti scaricate. Ciò è utile quando non si desidera acquisire risorse per tutte le dipendenze, ma non si sa quali si desidera in anticipo (e si utilizza Eclipse).

Ho finito per usare l'approccio di @ GabrielRamierez , ma utilizzerò l'approccio di @ PascalThivent in futuro.



1

Ho anche usato il plugin eclipse per portare il progetto nell'area di lavoro di eclipse. Da quando ho lavorato su un altro progetto ho visto che è possibile lavorare con eclipse ma senza il plugin maven-eclipse. Ciò semplifica l'utilizzo in ambienti diversi e consente un facile utilizzo di Mavens su Eclipse. E questo senza cambiare il file pom.xml.

Quindi, raccomando l'approccio di Gabriel Ramirez.


0

Per il debug è anche possibile utilizzare un "Decompilatore Java" come: JAD e decompilare la sorgente al volo (sebbene la fonte generata non sia mai la stessa dell'originale). Quindi installare JAD come plugin in Eclipse o il tuo IDE preferito.


0

I repository Maven forniscono un modo semplice per scaricare il jar delle fonti.

Lo spiegherò usando una dimostrazione di "spring-boot-actuator-autoconfigure".

  1. Vai al repository maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. La pagina elenca varie versioni. Fai clic su quello desiderato, diciamo 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. La pagina ha il link "Visualizza tutto" accanto a "File". Cliccalo - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. La pagina elenca vari file incluso quello per le fonti - 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

Altrimenti, puoi sempre "git clonare" il repository da github, se è lì e ottenere il codice specifico.

Come spiegato da altri, è possibile utilizzare il comando "mvn dependency: sources" per ottenere e generare il jar di fonti per la dipendenza che si sta utilizzando.

Nota: alcune dipendenze non avranno sources.jar, in quanto non contengono codice sorgente ma un file pom. ad es . attuatore-avviamento-molla-avvio . Come in questo caso:

I POM di avvio sono un insieme di descrittori di dipendenza convenienti che è possibile includere nell'applicazione. Ottieni uno sportello unico per tutta la primavera e la relativa tecnologia di cui hai bisogno, senza dover cercare il codice di esempio e copiare un sacco di descrittori di dipendenze.

Riferimento: Introduzione agli avviatori a molla


0

In IntelliJ IDEA è possibile scaricare automaticamente le risorse degli artefatti durante l'importazione attivando l'opzione Scarica automaticamente le fonti:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

inserisci qui la descrizione dell'immagine


0

Se si desidera trovare manualmente il file jar di origine per uno qualsiasi degli artefatti, andare alla posizione del repository maven per l'oggetto specifico e in File fare clic su "Visualizza tutto". È possibile trovare il file jar di origine.

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.