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.
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:
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)
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:
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.
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
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
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?
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.
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:
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
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)"
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.
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 é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.
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é.
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.
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:
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.
Réponses:
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
la source
mvn dependency:resolve -Dclassifier=javadoc
IntelliJ IDEA remarque automatiquement les javadocs, ce qui est très agréable.Configuration et exécution du plugin maven-eclipse, (par exemple à partir de la ligne de commande
mvn eclipse:eclipse
)la source
mvn eclipse:eclipse
si vous les ajoutez au fichier POM?M2_REPO
fichier 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èquesSi 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 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: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.
la source
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.
la source
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
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
la source
Pour télécharger une utilisation d'artefact
Pour les sources Groovy, ce serait
Pour le javadoc de Groovy, vous utiliseriez
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.la source
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»
la source
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
la source
Dans Eclipse
pom.xml
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.
la source
Dans éclipse - cliquez sur le projet puis:
.
la source
Vous pouvez, s'ils sont téléchargés. Généralement, ils sont appelés "frameworkname-version-source (s)"
la source
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. Choisir
Download Sources
. Attendez un instant et NetBeans téléchargera et installera automatiquement le code source, si disponible.De même, vous pouvez choisir
Download Javadoc
d'installer le document localement. Ensuite, vous pouvez contextuellement cliquer sur du code dans l'éditeur et choisir de voir le JavaDoc.la source
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.
la source
Si vous connaissez le groupId et l' aritifactId , vous pouvez générer une URL de téléchargement comme celle-ci.
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!
la source
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.
la source
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é.
la source
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".
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:
Référence: introduction aux démarreurs Spring Boot
la source
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:
Settings
→Build, Execution, Deployment
→Build Tools
→Maven
→Importing
la source
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.
la source