Récupérer les fichiers JAR source à partir du référentiel Maven

Réponses:

785

Micro-conseil Maven: obtenir des sources et des Javadocs

Lorsque vous utilisez Maven dans un IDE, vous trouvez souvent la nécessité pour votre IDE de résoudre le code source et les Javadocs pour vos dépendances de bibliothèque. Il existe un moyen facile d'atteindre cet objectif.

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

La première commande tentera de télécharger le code source pour chacune des dépendances de votre fichier pom.

La deuxième commande tentera de télécharger les Javadocs.

Maven est à la merci des emballeurs de bibliothèque ici. Ainsi, certains d'entre eux n'auront pas de code source et beaucoup d'entre eux n'auront pas de Javadocs.

Si vous avez beaucoup de dépendances, il peut également être judicieux d'utiliser des inclusions / exclusions pour obtenir des artefacts spécifiques, la commande suivante ne téléchargera par exemple que les sources de la dépendance avec un artifactId spécifique:

mvn dependency:sources -DincludeArtifactIds=guava

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

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

Alain O'Dea
la source
10
Où les place-t-on une fois téléchargés?
James Moore
15
Il les place dans le même répertoire que les fichiers JAR binaires sous M2_HOME.
Alain O'Dea
19
Si vous utilisez eclipse, il peut être utile de faire ensuite "mvn eclipse: eclipse" puis de rafraîchir votre projet dans eclipse - vous évite d'attacher manuellement des sources à chaque fichier.
unigeek
1
Je ne trouve pas les sources et les javadocs après leur téléchargement. J'ai vérifié tous les répertoires sous M2_HOME
Patrick Kiernan
2
Après mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA remarque automatiquement les javadocs, ce qui est très agréable.
Jonik
89

Configuration et exécution du plugin maven-eclipse, (par exemple à partir de la ligne de commande 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>
RobAu
la source
Que voulez-vous dire? Voulez-vous dire que les sources et les documents sont téléchargés lorsque vous exécutez mvn eclipse:eclipsesi vous les ajoutez au fichier POM?
Lii
3
Oui. Aussi simple que cela.
RobAu
@RobAu, où la source sera-t-elle téléchargée, sera-t-elle attachée au projet lui-même ou ailleurs?
Jaskey
1
Il sera téléchargé sous forme de fichier jar dans votre M2_REPOfichier xxxx-yy-sources.jar, au même emplacement que le fichier jar normal. Il sera attaché en tant que code source pour le pot xxxx-yy dans les bibliothèques
RobAu
1
@KanagaveluSugumar, vous devez ajouter le M2_REPO à l'éclipse, puis actualiser le projet.
RobAu
36

Si un projet crée un bocal des sources du projet et le déploie dans un référentiel maven, vous le trouverez :)

Juste pour info, les artefacts de sources sont généralement créés par le plugin maven-source . Ce plugin peut regrouper les sources principales ou de test d'un projet dans une archive jar et, comme expliqué dans Configuration du plugin source :

(...) Le fichier jar généré sera nommé par la valeur du finalNameplus "-sources" s'il s'agit des sources principales. Sinon, ce serait finalNameplus "-test-sources" s'il s'agit des sources de test.

Le texte supplémentaire a été donné pour décrire un artefact ("-sources" ou "-test-sources" ici) est appelé un classificateur.

Pour déclarer une dépendance sur un artefact qui utilise un classificateur, ajoutez simplement l' <classifier>élément. Par exemple:

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

Notez que vous ne le faites généralement pas, la plupart des IDE prennent en charge le téléchargement des sources (et / ou JavaDoc) à partir de l'artefact principal sans déclarer explicitement une dépendance à leur égard.

Enfin, notez également que certains moteurs de recherche de référentiel permettent de rechercher des artefacts à l'aide du classificateur (au moins Nexus le fait avec la recherche avancée). Voir cette recherche par exemple.

Pascal Thivent
la source
18

Le plugin maven idea pour IntelliJ Idea vous permet de spécifier si les sources et le doc java doivent être résolus et téléchargés.

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true
dev_doctor
la source
Au lieu de télécharger des sources pour toutes les dépendances, est-il possible de télécharger uniquement pour certaines dépendances en le spécifiant dans pom avec la dépendance elle-même, peut-on via une balise interne dans la balise de dépendance ou quelque chose de similaire?
nanosoft
Ce plugin est retiré
kiltek
18

Pour télécharger une source spécifique ou javadoc, nous devons inclure les GroupIds - C'est une valeur séparée par des virgules comme indiqué ci-dessous

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

Notez que le classificateur n'est pas séparé par des virgules, pour télécharger le javadoc, nous devons exécuter la commande ci-dessus une fois de plus avec le classificateur en tant que javadoc

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc
Anver Sadhat
la source
Au lieu de télécharger des sources pour toutes les dépendances, est-il possible de télécharger uniquement pour certaines dépendances en le spécifiant dans pom avec la dépendance elle-même, peut-on via une balise interne dans la balise de dépendance ou quelque chose de similaire?
nanosoft
14

Pour télécharger une utilisation d'artefact

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

Pour les sources Groovy, ce serait

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

Pour le javadoc de Groovy, vous utiliseriez

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

Cela met l'artefact donné dans votre référentiel Maven local, c'est-à-dire généralement $HOME/.m2/repository.

dependency:sources télécharge simplement les sources des dépendances du projet, pas les sources des plugins ni les sources des dépendances définies à l'intérieur des plugins.

Maddin
la source
12

vous pouvez trouver des informations dans cette question connexe: Obtenez les fichiers jar source joints à Eclipse pour les dépendances gérées par Maven
si vous utilisez le plugin eclipse maven, puis utilisez «mvn eclipse: eclipse-eclipse -DdownloadSources = true»

Stefan De Boey
la source
C'est la seule solution qui a fonctionné pour moi. J'utilise Eclipse Kepler. Puisque cela fait des références appropriées dans le .classpath . Comme le suivant:
aspdeepak
<classpathentry kind = "var" path = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0.jar" sourcepath = "M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0 -sources.jar ">
aspdeepak
Lorsque j'ai suivi la réponse @ RobAu, seuls les documents Hibernate sont téléchargés à partir du référentiel, pas Spring . Ensuite, je visite le lien que vous avez fourni et suivi @ mrembisz & apporter des modifications à la préférence Maven et fonctionne comme un charme. Je reçois Spring Docs . @Stefan De Boey Merci d'avoir partagé cela. +1.
OO7
9

si vous utilisez eclipse, vous pouvez également ouvrir Préférences> Maven et sélectionner Télécharger les sources d'artefact, cela laisserait le pom.xml intact et garderait vos sources ou documents java (si sélectionnés) juste pour le développement directement à l'emplacement de votre machine ~ / .m2

Gabriel Ramirez
la source
7

Dans Eclipse

  1. Clic droit sur le pom.xml
  2. Sélectionnez Run As-> Maven generate-sources
    il générera la source par défaut dans le dossier .m2

Prérequis:

Maven doit être configuré avec Eclipse.

bondkn
la source
1
Répond à une question différente. Cette question concerne le téléchargement des fichiers JAR source qui ne les génèrent pas.
Stephen C
5

Dans éclipse - cliquez sur le projet puis:

entrez la description de l'image ici.

Witold Kaczurba
la source
J'ai décoché 'télécharger les sources d'artefacts' au paramètre eclipse maven, donc il ne télécharge que le pot. Mais plus tard, j'ai essayé d'utiliser cette solution pour télécharger la source, elle a échoué sans aucun message. J'ai supprimé le dossier jar dans le référentiel local maven et j'ai téléchargé à nouveau le jar, puis le jar source a été téléchargé avec succès. Je pense que c'est parce que le référentiel local maven a le pot, donc je ne peux pas utiliser cette méthode pour télécharger la source.
Frank
4

Vous pouvez, s'ils sont téléchargés. Généralement, ils sont appelés "frameworkname-version-source (s)"

Bozho
la source
4

NetBeans, Context-Click

Dans NetBeans 8 avec un projet piloté par Maven, cliquez simplement sur le contexte de l'élément de liste de fichiers jar de la dépendance qui vous intéresse. ChoisirDownload Sources . Attendez un instant et NetBeans téléchargera et installera automatiquement le code source, si disponible.

De même, vous pouvez choisir Download Javadocd'installer le document localement. Ensuite, vous pouvez contextuellement cliquer sur du code dans l'éditeur et choisir de voir le JavaDoc.

capture d'écran de l'élément de menu contextuel "Download Sources" choisi dans un projet NetBeans 8 piloté par Maven

Basil Bourque
la source
3

En se basant sur l'observation de la console Maven dans Eclipse (Kepler), les sources seront automatiquement téléchargées pour une dépendance Maven si vous essayez d'ouvrir une classe à partir de ladite dépendance Maven dans l'éditeur pour lequel vous n'avez pas déjà téléchargé les sources. C'est pratique lorsque vous ne voulez pas récupérer la source pour toutes vos dépendances, mais que vous ne savez pas lesquelles vous voulez à l'avance (et que vous utilisez Eclipse).

J'ai fini par utiliser l'approche de @ GabrielRamierez , mais j'utiliserai l'approche de @ PascalThivent à l' avenir.

eebbesen
la source
2

Si vous connaissez le groupId et l' aritifactId , vous pouvez générer une URL de téléchargement comme celle-ci.

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback-classic/

et vous obtiendrez une page comme celle-ci, choisissez la version dont vous avez besoin, profitez-en! entrez la description de l'image ici

entrez la description de l'image ici

senninha
la source
1

J'ai également utilisé le plugin eclipse pour mettre le projet dans l'espace de travail eclipse. Depuis que j'ai travaillé sur un autre projet, j'ai vu qu'il est possible de travailler avec eclipse mais sans le plugin maven-eclipse. Cela le rend plus facile à utiliser avec différents environnements et permet l'utilisation facile de maven sur éclipse. Et cela sans changer le fichier pom.xml.

Je recommande donc l'approche de Gabriel Ramirez.

eeezyy
la source
0

Pour le débogage, vous pouvez également utiliser un "Java Decompiler" tel que: JAD et décompiler la source à la volée (bien que la source générée ne soit jamais la même que l'original). Installez ensuite JAD en tant que plugin dans Eclipse ou votre IDE préféré.

atom88
la source
0

Les référentiels Maven fournissent un moyen simple de télécharger le fichier source.

Je vais l'expliquer en utilisant une démonstration de "spring-boot-actuator-autoconfigure".

  1. Accédez au référentiel maven - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. La page répertorie différentes versions. Cliquez sur celui que vous souhaitez, disons, 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. La page a un lien "Afficher tout" à côté de "Fichiers". Cliquez dessus - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. La page répertorie divers fichiers, dont celui des sources - 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

Sinon, vous pouvez toujours "git cloner" le repo de github, si c'est là et obtenir le code spécifique.

Comme expliqué par d'autres, vous pouvez utiliser la commande "mvn dependency: sources" pour obtenir et générer le pot de sources pour la dépendance que vous utilisez.

Remarque: Certaines dépendances n'auront pas sources.jar, car celles-ci ne contiennent pas de code source mais un fichier pom. par exemple actionneur de démarrage à ressort . Comme dans ce cas:

Les POM de démarrage sont un ensemble de descripteurs de dépendance pratiques que vous pouvez inclure dans votre application. Vous bénéficiez d'un guichet unique pour toutes les technologies Spring et connexes dont vous avez besoin, sans avoir à parcourir des exemples de code et à copier-coller des charges de descripteurs de dépendance.

Référence: introduction aux démarreurs Spring Boot

Manojkumar Khotele
la source
0

Dans IntelliJ IDEA, vous pouvez télécharger automatiquement les sources d'artefacts lors de l'importation en activant l'option Télécharger automatiquement les sources:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

entrez la description de l'image ici

Saikat
la source
0

Si vous souhaitez trouver le fichier jar source pour l'un des artefacts manuellement, accédez à l'emplacement du référentiel maven pour l'artefact particulier et dans Fichiers, cliquez sur «Afficher tout». Vous pouvez trouver le fichier jar source.

Naresh Muthyala
la source