2010-04-05 7 views
15

Cuando ejecuto "mvn deploy: deploy", maven implementa 4 archivos jar en mi repositorio remoto interno.¿Cómo excluyo el jar de orígenes en mvn deploy?

Ellos son:

[nombre-módulo] -1.jar
[nombre-módulo] -1.pom
[nombre-módulo] -1-sources.jar
[nombre-módulo ] -1-tests.jar

En realidad, se están desplegando más archivos, como los archivos md5 y sha1. Pero para simplificar, simplemente salteo estos archivos aquí.

¿Hay alguna forma de excluir [nombre-módulo] -1-sources.jar del proceso de implementación?

Una forma en que puedo pensar es usar "mvn deploy: deploy-file", que me permite identificar qué jar para desplegar. Pero dado que tengo que implementar una docena de módulos, sería bueno si puedo configurar la exclusión del archivo de implementación en pom.xml. De lo contrario, tendré que escribir un script para implementar.

Gracias,
Richard

+0

FYI pregunta cercana para no implementar "-tests.jar" se [aquí] (http://stackoverflow.com/questions/8246136/maven-deploy-not-to- upload-test-jar) – boly38

Respuesta

2

Implementar sitio plugin de Maven:

http://maven.apache.org/plugins/maven-deploy-plugin/index.html

Sobre la base de lo que estoy leyendo allí, parece que puede excluir módulos de despliegue, pero no los archivos individuales - al menos no todavía.

Si nos fijamos en la página objetivos:

http://maven.apache.org/plugins/maven-deploy-plugin/plugin-info.html

que no muestra todas las configuraciones específicas del plug-in para lo que busca. Como la página de objetivos está hecha de la clase de complemento, al mirar las anotaciones, diría que no tienen la capacidad.

Una cosa que podría hacer sería crear una compilación diferente que no cree las jarras que no desea crear, es decir, crear un paquete de ensamblaje diferente o similar para esa compilación y hacer que la compilación se ejecute cuando están tratando de implementar paquetes específicos.


Editar: koppernickus tiene una descripción completa de esto, le recomendaría que vea su publicación.

1

Maven mvn deploy:deploy despliega todos los artefactos producidos durante el proceso de maven (ciclo de vida predeterminado). Para no implementar [module-name]-1-sources.jar, simplemente debe (?) No producir uno. Si está utilizando maven-source-plugin para adjuntar archivos fuente, simplemente no lo use más.

Si este no es el caso que está experimentando favor proporcione más detalles: (¿qué Plugin generar este artefacto)

  1. ¿Cómo se genera [module-name]-1-sources.jar artefacto
  2. ¿Por qué necesita para generar fuentes, pero se no es necesario desplegarlos en el repositorio?
+0

@koppernickus we mantener las fuentes en el repositorio de publicación pero no en el repositorio de instantáneas. En realidad, esto podría ser una práctica común en industrias donde las versiones de productos necesitan ser auditadas por entidades externas. – sal

+1

@sal Considere utilizar mvn-release-plugin (http://maven.apache.org/plugins/maven-release-plugin/) para cualquier artefacto que se libere en un repositorio que no sea de instantáneas. El proceso tiene el siguiente aspecto: 1. para instantáneas (suponiendo que este sea el caso más frecuente): simplemente haga "mvn clean install" -> elimine la fuente como artefacto adjunto. 2. para versión (suponiendo que esto se usa raramente): ejecutar mvn release: prepare y luego mvn: perform De todas formas, si necesita un proceso ligeramente diferente ("más pesado") para releases que snapshots at lea este plugin. En nuestro caso, funciona muy bien. – kopper

+0

Esto fue en respuesta a la pregunta 2. Usamos un perfil de implementación con el complemento de lanzamiento que automatiza el proceso. Y sí, es pesado. Pero el proceso de auditoría es mucho más pesado. – sal

5

¿Hay alguna manera de excluir [nombre del módulo] -1-sources.jar del proceso de implementación?

No genere fuentes si no desea implementarlas. Así que, o retire los siguientes elementos (que debe tener en su POM) o ponerlo en un perfil que no utiliza o excluir durante la liberación (Me pregunto cuando se utiliza fuentes en ese caso):

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <executions> 
     <execution> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
+0

Eso es correcto. Podría eliminar el complemento de origen maven del pom.xml padre. Sin embargo, me gustaría hacer esto. Me gustaría mantener el complemento de origen maven en el POM padre. Pero proporcione un perfil para deshabilitar el complemento de origen. Esto será ideal, pero no estoy seguro de si es factible. Lo probaré. – Richard

+0

@Richard No creo que pueda "desactivar" un complemento en un perfil, así que tendrá que hacerlo de otra manera: ponga la declaración 'maven-source-plugin' en un perfil (activado de manera predeterminada, por ejemplo) y elimine el perfil durante la versión: 'mvn -P! my-profile deploy' –

+0

Buena solución Pascal. – TacB0sS

12

Como de la versión de la 2.2maven-source-plugin puede omitir la generación de fuente con una opción de configuración sin tener que poner el plugin en un perfil en su pom padres:

<!-- Do not generate a source jar --> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-source-plugin</artifactId> 
    <version>2.2.1</version> 
    <configuration> 
     <skipSource>true</skipSource> 
    </configuration> 
    </plugin> 
4

Let me supongo que salta shoudn't fuentes generadoras de un módulo . En ese caso, esto sería una solución simple que le ayudará a manejar este escenario:

En la parte de ejecución de "experto-source-plugin" bajo plugins sección, establezca la Adjuntar atribuyen a falsa . Esta configuración generará sources.jar para su módulo, pero no lo adjuntará a la lista de artefactos del proyecto.

El fragmento de ejemplo está aquí:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>${source.plugin.version}</version> 
     <executions> 
      <execution> 
       <id>module1-sources</id> 
       <phase>verify</phase> 
       <goals> 
        <goal>jar-no-fork</goal> 
       </goals> 
       <configuration> 
        <!-- The below specified attribute 'attach' will disable the sources.jar not included in the artifact list --> 
        <attach>false</attach> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
4

Si no desea modificar POM, puede omitir la creación de fuentes de tarro añadiendo -Dsource.skip de línea de comandos mvn.

Cuestiones relacionadas