Obtenga los JAR de origen del repositorio de Maven

Respuestas:

785

Maven Micro-Tip: Obtenga fuentes y Javadocs

Cuando usa Maven en un IDE, a menudo encuentra la necesidad de que su IDE resuelva el código fuente y los Javadocs para las dependencias de su biblioteca. Hay una manera fácil de lograr ese objetivo.

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

El primer comando intentará descargar el código fuente para cada una de las dependencias en su archivo pom.

El segundo comando intentará descargar los Javadocs.

Maven está a merced de los empaquetadores de la biblioteca aquí. Entonces, algunos de ellos no tendrán el código fuente empaquetado y muchos de ellos no tendrán Javadocs.

En caso de que tenga muchas dependencias, también podría ser una buena idea usar inclusiones / exclusiones para obtener artefactos específicos, el siguiente comando, por ejemplo, solo descargará las fuentes para la dependencia con un artifactId específico:

mvn dependency:sources -DincludeArtifactIds=guava

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

Documentación: https://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html

Alain O'Dea
fuente
10
¿Dónde los pone una vez que se descargan?
James Moore
15
Los coloca en el mismo directorio que los JAR binarios en M2_HOME.
Alain O'Dea
19
Si está utilizando eclipse, puede ser útil también hacer "mvn eclipse: eclipse" luego y luego actualizar su proyecto en eclipse, lo que le ahorra adjuntar fuentes manualmente a cada archivo.
unigeek
1
No puedo encontrar las fuentes y los javadocs después de descargarlos. He revisado todos los directorios en M2_HOME
Patrick Kiernan
2
Después de mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA se da cuenta automáticamente de los javadocs, lo cual es muy bueno.
Jonik
89

Configuración y ejecución del complemento maven-eclipse (por ejemplo, desde la línea de comandos 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
fuente
¿Qué quieres decir? ¿Quiere decir que las fuentes y los documentos se descargan cuando ejecuta mvn eclipse:eclipsesi agrega esto al archivo POM?
Lii
3
Si. Simple como eso.
RobAu
@RobAu, ¿dónde se descargará la fuente, se adjuntará al proyecto por sí mismo o en otro lugar?
Jaskey
1
Se descargará como jar en tu M2_REPOcomo xxxx-yy-sources.jar, en la misma ubicación que el jar normal. Se adjuntará como código fuente para el jar xxxx-yy en las bibliotecas
RobAu
1
@KanagaveluSugumar necesita agregar el M2_REPO al eclipse, y luego simplemente actualizar el proyecto.
RobAu
36

Si un proyecto crea un frasco de las fuentes del proyecto y lo implementa en un repositorio Maven, lo encontrará :)

Solo para su información, los artefactos de fuentes generalmente son creados por el complemento de fuente maven . Este complemento puede agrupar las fuentes principales o de prueba de un proyecto en un archivo jar y, como se explica en Configuración del complemento de origen :

(...) El archivo jar generado se nombrará con el valor de finalName"-sources" más si son las fuentes principales. De lo contrario, sería finalNamemás "-test-sources" si son las fuentes de prueba.

El texto adicional que se proporcionó para describir un artefacto ("-sources" o "-test-sources" aquí) se denomina clasificador.

Para declarar una dependencia en un artefacto que usa un clasificador, simplemente agregue el <classifier>elemento. Por ejemplo:

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

Tenga en cuenta que generalmente no hace esto, la mayoría de los IDE brindan soporte para descargar fuentes (y / o JavaDoc) del artefacto principal sin declarar explícitamente una dependencia de ellos.

Finalmente, también tenga en cuenta que algunos motores de búsqueda de repositorio permiten buscar artefactos utilizando el clasificador (al menos Nexus lo hace con la búsqueda avanzada). Ver esta búsqueda por ejemplo.

Pascal Thivent
fuente
18

El complemento de Maven Idea para IntelliJ Idea le permite especificar si las fuentes y el java doc deben resolverse y descargarse

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true
dev_doctor
fuente
En lugar de descargar fuentes para todas las dependencias, ¿es posible descargar solo algunas dependencias al especificarlas en pom junto con la dependencia en sí, puede b a través de alguna etiqueta interna en la etiqueta de dependencia o algo similar?
nanosoft
Este complemento está retirado
kiltek
18

Para descargar alguna fuente específica o javadoc necesitamos incluir los GroupIds - Es un valor separado por comas como se muestra a continuación

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

Tenga en cuenta que el clasificador no está separado por comas, para descargar el javadoc necesitamos ejecutar el comando anterior una vez más con el clasificador como javadoc

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc
Anver Sadhat
fuente
En lugar de descargar fuentes para todas las dependencias, ¿es posible descargar solo algunas dependencias al especificarlas en pom junto con la dependencia en sí, puede b a través de alguna etiqueta interna en la etiqueta de dependencia o algo similar?
nanosoft
14

Para descargar cualquier uso de artefactos

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

Para las fuentes Groovy esto sería

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

Para el javadoc de Groovy usarías

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

Esto coloca el artefacto dado en su repositorio local de Maven, es decir, generalmente $HOME/.m2/repository.

dependency:sources simplemente descarga las fuentes de las dependencias del proyecto, no las fuentes de los complementos ni las fuentes de dependencias definidas dentro de los complementos.

Maddin
fuente
12

puede encontrar información en esta pregunta relacionada: Obtenga archivos jar de origen adjuntos a Eclipse para dependencias administradas por Maven
si usa el complemento eclipse maven y luego use 'mvn eclipse: eclipse -DdownloadSources = true'

Stefan De Boey
fuente
Esta es la única solución que funcionó para mí. Estoy usando Eclipse Kepler. Dado que esto hace referencias adecuadas en el .classpath . Como el siguiente:
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
Cuando seguí la respuesta de @ RobAu, solo los documentos de Hibernate se descargan del repositorio, no Spring . Luego visito el enlace que ha proporcionado y seguido @ mrembisz y hago cambios a las preferencias de Maven y funciona de maravilla . Tengo Spring Docs . @ Stefan De Boey Gracias por compartir esto. +1.
OO7
9

si está utilizando eclipse, también puede abrir Preferencias> Maven y seleccionar Descargar fuentes de artefactos, esto dejaría intacto el pom.xml y mantendría sus fuentes o documentos de Java (si está seleccionado) solo para el desarrollo justo en la ubicación de su máquina ~ / .m2

Gabriel Ramirez
fuente
7

En eclipse

  1. Haga clic derecho en el pom.xml
  2. Seleccione Run As-> Maven generate-sources
    generará la fuente por defecto en la carpeta .m2

Requisito previo:

Maven debe configurarse con Eclipse.

bondkn
fuente
1
Responde una pregunta diferente. Esta pregunta trata sobre la descarga de archivos JAR de origen que no los generan.
Stephen C
5

En eclipse, haga clic en el proyecto y luego:

ingrese la descripción de la imagen aquí.

Witold Kaczurba
fuente
Desmarqué 'descargar fuentes de artefactos' en la configuración de eclipse maven, por lo que solo descarga el jar. Pero más tarde, intenté usar esta solución para descargar la fuente, falló sin ningún mensaje. Eliminé la carpeta jar en el repositorio local de maven y descargué el jar nuevamente, luego el jar fuente descargó el éxito. Creo que esto se debe a que el repositorio local de Maven tiene el jar, por lo que no puedo usar este método para descargar la fuente.
franco
4

Puedes, si están subidos. Generalmente se llaman "frameworkname-version-source (s)"

Bozho
fuente
4

NetBeans, Context-Click

En NetBeans 8 con un proyecto dirigido por Maven, simplemente haga clic contextual en el elemento de la lista de archivos jar de la dependencia en la que esté interesado. EscogerDownload Sources . Espere un momento y NetBeans descargará e instalará automáticamente el código fuente, si está disponible.

Del mismo modo, puede optar Download Javadocpor instalar el documento localmente. Luego puede hacer clic contextual en algún código en el editor y elegir ver JavaDoc.

captura de pantalla del elemento del menú contextual "Descargar fuentes" elegido en un proyecto de NetBeans 8 impulsado por Maven

Albahaca Bourque
fuente
3

Basado en ver la consola Maven en Eclipse (Kepler), las fuentes se descargarán automáticamente para una dependencia Maven si intenta abrir una clase de dicha dependencia Maven en el editor para el que aún no tiene las fuentes descargadas. Esto es útil cuando no desea obtener la fuente de todas sus dependencias, pero no sabe cuáles desea con anticipación (y está usando Eclipse).

Terminé usando el enfoque de @ GabrielRamierez , pero emplearé el enfoque de @ PascalThivent en el futuro.

eebbesen
fuente
2

Si conoce groupId y aritifactId , puede generar una URL de descarga como esta.

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

y obtendrá una página como esta, elija la versión que necesita, ¡simplemente disfrútela! ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

senninha
fuente
1

También he usado el complemento eclipse para llevar el proyecto al espacio de trabajo de eclipse. Como he trabajado en un proyecto diferente, vi que es posible trabajar con eclipse pero sin el complemento maven-eclipse. Eso hace que sea más fácil de usar con diferentes entornos y permite el uso fácil de maven sobre eclipse. Y eso sin cambiar el archivo pom.xml.

Por lo tanto, recomiendo el enfoque de Gabriel Ramírez.

eeezyy
fuente
0

Para la depuración también puede usar un "Java Decompiler" como: JAD y descompilar la fuente sobre la marcha (aunque la fuente generada nunca es la misma que la original). Luego instale JAD como un complemento en Eclipse o su IDE favorito.

atom88
fuente
0

Los repositorios de Maven proporcionan una forma sencilla de descargar jar jar de fuentes.

Lo explicaré usando una demostración para "spring-boot-actuator-autoconfigure".

  1. Vaya al repositorio de Maven: https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. La página enumera varias versiones. Haga clic en el deseado, digamos, 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. La página tiene el enlace "Ver todo" junto a "Archivos". Haga clic en él: https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. La página enumera varios archivos, incluido el de fuentes: 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

De lo contrario, siempre puede "clonar git" el repositorio de github, si está allí, y obtener el código específico.

Según lo explicado por otros, puede usar "mvn dependency: sources" para obtener y generar fuentes jar para la dependencia que está utilizando.

Nota: Algunas dependencias no tendrán sources.jar, ya que esas no contienen código fuente sino un archivo pom. por ejemplo , actuador de arranque con resorte . Como en este caso:

Los POM de inicio son un conjunto de descriptores de dependencia convenientes que puede incluir en su aplicación. Obtiene una ventanilla única para toda la tecnología Spring y relacionada que necesita, sin tener que buscar código de muestra y copiar y pegar cargas de descriptores de dependencia.

Referencia: Introducción a los arrancadores de arranque de primavera

Manojkumar Khotele
fuente
0

En IntelliJ IDEA, puede descargar fuentes de artefactos automáticamente al importar activando la opción Descargar fuentes automáticamente:

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

ingrese la descripción de la imagen aquí

Saikat
fuente
0

Si desea encontrar el archivo jar de origen para cualquiera de los artefactos manualmente, vaya a la ubicación del repositorio de maven para el artefacto en particular y en Archivos, haga clic en 'Ver todo'. Puede encontrar el archivo jar de origen.

Naresh Muthyala
fuente