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