Cómo cargar fuentes al repositorio local de Maven

3 minutos de lectura

Avatar de usuario de Andriy Kopachevskyy
Andriy Kopachevskyy

Supongamos que tengo un proyecto Maven 2 Java en mi máquina local. construyo el proyecto .jar archivo y enviarlo a mi repositorio Maven local, usando mvn install.

Pregunta:

¿Cómo puedo obligar a Maven a impulsar también las fuentes del proyecto? jar al repositorio local?

Esto es útil si usaré el proyecto mencionado anteriormente como dependencia mientras desarrollo un nuevo proyecto, y puedo usar el mvn eclipse:eclipse -DdownloadSources característica.

Avatar de usuario de Sean Patrick Floyd
sean patrick floyd

Este fragmento instala/implementa automáticamente un archivo jar de origen desde cualquier instalación/implementación:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>[whatever version is current]</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

Use este enlace para verificar el versión actual de la maven-source-plugin

O desde la línea de comando:

mvn clean source:jar install

  • wow, es tan simple! fue difícil encontrar esto en el sitio de maven, ¡gracias!

    –Andriy Kopachevskyy

    28 de octubre de 2010 a las 8:40

  • ¿Hay alguna manera de hacer esto desde la línea de comando, sin editar el pom?

    – Hertzsprung

    21 de mayo de 2012 a las 16:06

  • @hertzsprung seguro: mvn clean source:jar install

    – Sean Patrick Floyd

    21 mayo 2012 a las 21:05

  • no olvides usar la última versión del complemento. la última versión actual es 3.2.1

    – Ofir Meguri

    19 de marzo de 2020 a las 8:16

  • la parte más divertida es el orden de los complementos en la línea de comando (“source:jar install” funciona pero “install source:jar” no funciona para mí, maven3.5.2/java8)

    – perro abstracto

    1 de agosto de 2020 a las 5:06

He encontrado una mejor respuesta, solo agrega esto en tu pom.xml

 <build>
      <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
            <execution>
                <id>attach-sources</id>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
       </plugin>
     </plugins>
  </build>

Y ejecutar desde la línea de comando:

mvn install

Ahora maven instale en su repositorio local jar y fuentes

Solución encontrada en: https://www.mkyong.com/maven/generate-source-code-jar-for-maven-based-project/ (No estoy afiliado de ninguna manera)

Una adición a la respuesta anterior:

Todavía no funcionaba correctamente para mí. El archivo sources.jar se generó y estuvo disponible en la carpeta de destino, pero no en el repositorio local. La razón de esto fue que especifiqué la fase de manera diferente: <phase>install</phase> En este caso, el complemento de instalación de maven se ejecuta primero y copia los archivos jar en el repositorio local. Luego se genera source.jar (y por lo tanto no se copia).

[INFO] --- maven-install-plugin:2.4:install (default-install) @ foo ---
[INFO] Installing foo.jar into local repo
[INFO] Installing pom.xml into local repo
[INFO] Installing javadoc.jar into local repo
[INFO]
[INFO] --- maven-source-plugin:3.0.1:jar-no-fork (attach-sources) @ foo ---
[INFO] Building jar: foo-sources.jar

Por lo tanto, es importante especificar una fase anterior a la instalación (como se menciona correctamente en la respuesta aceptada).

mvn install:install-file -Dfile=hello-world-1.0.0.jar -Dsources=hello-world-1.0.0-sources.jar -DpomFile=hello-world-1.0.0.pom

¿Ha sido útil esta solución?