2011-01-18 10 views
74

Quiero implementar fuentes y javadocs con mis instantáneas. Esto significa que quiero automatizar el siguiente comando:¿Cómo implementar SNAPSHOT con las fuentes y JavaDoc?

mvn clean source:jar javadoc:jar deploy 

Sólo para ejecutar:

mvn clean deploy 

yo no quiero tener la generación de javadoc/fuentes ejecutado durante la fase de install (es decir, se basa local) .

Sé que los complementos de fuente/javadoc se pueden sincronizar con la ejecución del complemento release, pero no sé cómo conectarlo a las versiones de las instantáneas.

Respuesta

69
<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-source-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>attach-sources</id> 
      <phase>deploy</phase> 
      <goals><goal>jar-no-fork</goal></goals> 
     </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>attach-javadocs</id> 
      <phase>deploy</phase> 
      <goals><goal>jar</goal></goals> 
     </execution> 
     </executions> 
    </plugin> 
    <plugin> 
     <!-- explicitly define maven-deploy-plugin after other to force exec order --> 
     <artifactId>maven-deploy-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>deploy</id> 
      <phase>deploy</phase> 
      <goals><goal>deploy</goal></goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Consulte Sonatype's OSS parent POM para obtener un ejemplo completo.

+0

Estoy usando esta configuración, y funciona bastante bien. Sin embargo, tuve dos pequeños problemas: uno, las fuentes generadas no están incluidas en el objetivo "jar", necesitará "jar-no-fork". Dos, hay un error en el complemento de publicación que hará que se generen las fuentes de publicación dos veces (y por lo tanto se implemente dos veces, lo que generará problemas con los administradores de repositorio) – mglauche

+1

'maven-source-plugin: jar' se adjunta al' paquete' fase de forma predeterminada, por lo que podría dejar ' verificar' y lograr lo mismo. Además, no estoy seguro de por qué adjuntarías esto para verificar de todos modos, ya que esa fase está destinada a "empaquetar el proyecto y ejecutar pruebas de integración". –

+0

@mglauche @matt gracias por sus comentarios. Acabo de hacer los cambios apropiados. – sfussenegger

43

Sólo para añadir una alternativa que no requiere que usted lodo con la configuración del plugin:

mvn -DperformRelease=true [goals] 

crédito va a mcbeelen de http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998

+3

Me gustaría mencionar que esta característica podría desaparecer en una versión futura de Maven (posiblemente Maven-4). Mira el comentario aquí en la sección de perfil de Maven Super POM: http://maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html – Dan

16

El artículo mencionado por Dan también menciona otro método que funciona sin modificar poms Y no va a desaparecer en el corto plazo:

mvn limpia javadoc: fuente tarro: tarro i nstall

que funciona muy bien con Maven 3+, junto con ...

mvn limpia javadoc: fuente tarro: Tarro desplegar

que fueron comprobadas desde el despliegue de Jenkins a Nexus.

Este enfoque fue bueno porque solo tuve que modificar algunos trabajos de Jenkins y no tuve que meterme con mis poms.

+3

¡Gracias por una solución sin pompones! Tenga en cuenta que ** javadoc: jar ** y/o ** fuente: jar ** deben aparecer antes de ** instalar ** o ** implementar **, o los archivos adicionales no estarán "adjuntos" a la implementación . – seanf

+1

¿No es esto exactamente lo que OP intentó pero no quiere? – peedee

+0

FWIW estas opciones también funcionan con 'package':' mvn clean javadoc: jar source: jar package' – ecoe

Cuestiones relacionadas