Obtenga archivos jar de origen adjuntos a Eclipse para dependencias administradas por Maven

176

Estoy usando Maven (y la integración de Maven Eclipse) para administrar las dependencias de mis proyectos Java en Eclipse. La función de descarga automática para archivos JAR de los repositorios de Maven es un ahorro de tiempo real. Desafortunadamente, no incluye documentación de API y código fuente.

¿Cómo puedo configurar Maven para que también obtenga automáticamente los archivos adjuntos fuente y javadoc y los registre correctamente con Eclipse?

Thilo
fuente
Pregunta relacionada sobre cómo descargar siempre fuentes y javadoc cuando se usa maven: stackoverflow.com/questions/5780758/…
Flujo el

Respuestas:

226

Estoy seguro de que el complemento m2eclipse Maven para Eclipse, al revés, puede hacerlo. Puede configurarlo para que descargue los archivos fuente y javadoc automáticamente.

Esto se logra yendo a Ventana> Preferencias> Maven y marcando las opciones "Descargar orígenes de artefactos" y "Descargar Artifact JavaDoc".

Captura de pantalla de las preferencias de Maven

mrembisz
fuente
Sí, acabo de comenzar a usar m2eclipse, y esto se necesita (y muchas otras cosas).
Thilo
44
Ninguna de estas respuestas son respuestas. ¿Por qué están siendo votados? Pude descargar las fuentes haciendo clic con el control en el proyecto en la vista Navegador y seleccionando "m2 Maven" -> "Descargar fuentes". Luego pude hacer clic en el comando (mac) en la clase para navegar a la fuente vinculada.
Alex Worden
8
Parece que si el JAR compilado ya se ha descargado, Eclipse no intentará obtener los JAR de origen / Javadoc de inmediato. Parece que al modificar un POM que contiene una dependencia de los POM para los que quiero la fuente / Javadoc en Eclipse y guardar la POM descarga la fuente / Javadoc para las dependencias, incluso si el JAR compilado ya está en la caché del repositorio de Maven.
Francis Gagné
13
@Francis: después de realizar el cambio anterior, haga clic con el botón derecho en su proyecto y seleccione "Maven> Actualizar proyecto ..." Esto hará que se descarguen los archivos fuente.
carbontax
3
En lugar de descargar fuentes para todas las dependencias, ¿es posible descargar solo algunas dependencias al especificarlo 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
127
mvn eclipse:eclipse -DdownloadSources=true

o

mvn eclipse:eclipse -DdownloadJavadocs=true

o puede agregar ambas banderas, como señala Spencer K.

Además, la =trueporción no es necesaria, por lo que puede usar

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs
Stephen Denne
fuente
8
¡o ambos! mvn eclipse: eclipse -DdownloadSources = true -DdownloadJavadocs = true Esto solo funciona si la fuente y los javadocs se proporcionaron al repositorio desde el que está descargando. A veces no se proporcionan como la primavera.
Spencer Kormos
2
La primavera ahora los proporciona.
Robin Green
Tenga en cuenta que esta respuesta tiene más de 10 años. Use el complemento m2e en eclipse en lugar de hacer que maven cree archivos de configuración de eclipse.
Thorbjørn Ravn Andersen
71

Las otras respuestas sobre este trabajo, pero si desea evitar tener que recordar los argumentos de la línea de comandos, también puede agregar a la configuración downloadSources y downloadJavadocs a la sección maven-eclipse-plugin de su 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>
pensar demasiado
fuente
¿podría configurar esto en un nivel por dependencia?
marcorossi
@marcorossi Lo siento, no estoy seguro si eso es posible.
pensar demasiado el
No estoy convencido de que esto sea apropiado. ¿Seguramente la configuración de descarga de fuente y Javadoc es una preferencia del usuario, no una preocupación a nivel de proyecto? Vea mi respuesta a continuación para saber cómo colocar esto en el settings.xmlarchivo.
Duncan Jones
Recibí esta advertencia: [ADVERTENCIA] 'build.plugins.plugin.version' para org.apache.maven.plugins: falta maven-eclipse-plugin. Para solucionarlo, puede agregar algo como esto a continuación <artifactId>: <version> 2.9 </version>
Christiaan
16

Prefiero no poner la configuración de descarga de fuente / Javadoc en el pom.xmlarchivo del proyecto , ya que creo que son preferencias del usuario, no propiedades del proyecto. En cambio, los coloco en un perfil en mi settings.xmlarchivo:

<?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>
Duncan Jones
fuente
1
Copié este settings.xml en .m2, sin embargo, las fuentes y los javadocs no se copian. Sin embargo, el siguiente comando explícitamente en la CLI trae las fuentes y javadocs: dependencia de mvn: dependencia de fuentes: resolver -Dclassifier = javadoc ¿Alguna idea?
Arun Gupta
Tal vez esto funcione, pero por favor explique, ¿cómo se supone que el plugin de eclipse maven encuentra estos ajustes de configuración? ¿Crees que busca propiedades globales?
chrisinmtown
9

Haga clic derecho en proyecto -> maven -> descargar fuentes

sumeet
fuente
3
¡Todos decían cómo habilitarlo, no cómo hacer que Maven descargue las fuentes! después de habilitar la opción
Chad
8

Si los archivos jar de origen están en el repositorio local y está utilizando el soporte de Eclipses maven, los orígenes se adjuntan automáticamente. Puede ejecutar mvn dependency:sourcespara descargar todos los archivos jar de origen para un proyecto determinado. Sin embargo, no estoy seguro de cómo hacer lo mismo con la documentación.

Resistente
fuente
Esto funcionó para mí. Después de ejecutar mvn dependency:sources, pude hacer clic en Eclipse para leer la fuente. No requiere mucking adicional con m2e. Para descargar los javadocs que haces mvn dependency:sources -Dclassifier=javadoc.
Mat Gessel
4

Si está usando meclipse do

ventana -> maven -> Descargar fuentes de artefactos (seleccionar verificación)

(Si aún obtiene la ventana de adjuntar fuente, haga clic en el botón adjuntar archivo y cierre la ventana de adjuntar fuente. La próxima vez que intente ver la fuente, se abrirá la fuente correcta)

Surajz

surajz
fuente
3

También hay una pregunta similar que responde a esto e incluye ejemplos de configuración de pom.

andrel
fuente
3

Intenté windows-> pref ..-> Maven Pero no estaba funcionando. Por lo tanto, creé una nueva ruta de clase con el comando mvn eclipse: eclipse -DdownloadSources = true y actualicé el espacio de trabajo una vez. voila .. Se adjuntaron fuentes.

La entrada del jar de origen está disponible en la ruta de clase. Por lo tanto, la nueva construcción resolvió el problema ...

om39a
fuente
Con su solución, puedo elegir el módulo para el que quiero obtener fuentes. Simplemente cd en ese módulo y compilar con "mvn eclipse: clean eclipse: eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true". Gracias :)
vishwarajanand
2

en mi versión de Eclipse helios con m2Eclipse no hay

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

Debajo de la ventana solo hay "nueva ventana", "nuevo editor", "perspectiva abierta", etc.

Si hace clic derecho en su proyecto, elija maven -> descargar fuentes

No pasa nada. no se descargan fuentes, no se actualizan archivos pom, no aparece una ventana emergente preguntando qué fuentes.

Hacer mvn xxx fuera de eclipse es peligroso (algunos comandos no funcionan con m2ecilpse). Lo hice una vez y perdí todo el proyecto, tuve que reinstalar eclipse y comenzar desde cero.

Todavía estoy buscando una manera de hacer que Ecilpse y Maven encuentren y usen la fuente de frascos externos como servlet-api.

tuerca de mariposa
fuente
2

Cambiar pom para que maven-eclipse-plugin incluya source / javadoc solo se aplica a las nuevas dependencias que se agregan a pom. Si necesitamos solicitar dependencias existentes, debemos ejecutar mvn dependency: sources. Lo comprobé.

bnguyen82
fuente
2

Comprobar la fuente de descarga / javadoc en la preferencia Eclipse-Maven, a veces no es suficiente. En el caso de que maven no haya podido descargarlos por algún motivo (¿un apagón de la red?), Maven crea algunos archivos * .lastUpdated, y nunca los volverá a descargar. Mi solución empírica fue eliminar el directorio de artefactos de .m2 / repository, y reiniciar el espacio de trabajo de eclipse con la fuente de descarga / javadoc verificada y actualizar los proyectos al inicio también. Después de reiniciar el espacio de trabajo, tal vez algunos proyectos se puedan marcar por error, mientras se descarga el progreso del eclipse, luego se borrará cualquier error. Tal vez este procedimiento no sea tan "científico", pero para mí fue exitoso.

usuario17417
fuente
1

Agregué la configuración de pom al complemento maven-eclipse para descargar la fuente y los javadocs, pero imagino / espero que eso suceda para las nuevas dependencias, no para las existentes.

Para las dependencias existentes, busqué en el explorador de paquetes hasta las "Dependencias de Maven" e hice clic derecho en commons-lang-2.5.jar, seleccioné Maven | Descargue Fuentes y ... nada parecía suceder (ninguna barra de progreso o indicación de que estaba haciendo algo). Sin embargo, se descargó ya que ahora puedo saltar a la fuente en commons-lang.

único72
fuente
1

pensar demasiado sugiere usar la configuración en el 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>
...

Primero pensé que esto aún no adjuntaría el javadoc y las fuentes (como intenté sin éxito con esa opción -DdownloadSources antes).

Pero sorpresa: ¡el archivo .classpath está adjuntando sus fuentes y javadoc cuando se usa la variante POM!

jhohlfeld
fuente
1

Para Indigo (y probablemente Helios), las casillas de verificación mencionadas anteriormente se encuentran aquí:

Ventana -> Preferencias -> Maven

Chris Romine
fuente
0

Tuve un problema similar, y la solución que mejor funcionó para mí fue incluir la fuente en el mismo jar que el código compilado (por lo que un directorio dado en el jar incluiría ambos Foo.javay Foo.class). Eclipse asocia automáticamente la fuente con el código compilado y proporciona automáticamente JavaDoc desde la fuente. Obviamente, eso solo es útil si controlas el artefacto.

Dan R.
fuente
0

Después de configurar las propiedades a nivel de proyecto o de usuario, haga un Maven -> Actualizar proyecto (Forzar actualización). Descarga las fuentes.

arkabhi
fuente