2010-04-14 16 views
11

Tengo un proyecto que simplemente consiste en archivos. Quiero empaquetar esos archivos en un zip y almacenarlos en un repositorio de maven. Tengo el plugin de ensamblaje configurado para construir el archivo zip y esa parte funciona bien, pero parece que no puedo averiguar cómo instalar el archivo zip.Complemento Maven Assembly: instala el ensamblado creado

Además, si quiero utilizar este conjunto en otro artefacto, ¿cómo lo haría? Tengo la intención de llamar a la dependencia: descomprimir, pero no tengo un artefacto en el repositorio para descomprimir.

¿Cómo puedo obtener un archivo zip en mi repositorio para que pueda volver a utilizarlo en otro artefacto?

pom padres

<build> 
     <plugins> 
      <plugin> 
       <!--<groupId>org.apache.maven.plugins</groupId>--> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2-beta-5</version> 
       <configuration> 
        <filters> 
         <filter></filter> 
        </filters> 
        <descriptors> 
         <descriptor>../packaging.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

POM Niño

<parent> 
    <groupId>com. ... .virtualHost</groupId> 
    <artifactId>pom</artifactId> 
    <version>0.0.1</version> 
    <relativePath>../pom.xml</relativePath> 
</parent> 

<name>Virtual Host - ***</name> 
<groupId>com. ... .virtualHost</groupId> 
<artifactId>***</artifactId> 
<version>0.0.1</version> 
<packaging>pom</packaging> 

que filtra el nombre hacia fuera. ¿Es este POM correcto? Solo quiero agrupar archivos para un host virtual en particular.

Gracias,

Walter

Respuesta

16

Tengo el plugin de montaje configurado para construir el archivo zip y esa parte funciona bien, pero me parece que no puede encontrar la manera de instalar el archivo zip?

Bueno, el montaje creado debe quedar atado automáticamente al proyecto y luego cargado en el repositorio en un objetivo install y deploy. ¿Puedes mostrar tu pom?

Actualización: Con su configuración actual, no creo que el conjunto se cree como parte de su compilación. Es necesario para unir el objetivo single a una fase del ciclo de vida, por lo general package:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-5</version> 
    <configuration> 
     <descriptors> 
     <descriptor>../packaging.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> <!-- this is used for inheritance merges --> 
     <phase>package</phase> <!-- append to the packaging phase. --> 
     <goals> 
      <goal>single</goal> <!-- goals == mojos --> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

Y ahora se debe conseguir instalado/desplegado correctamente.

Además, si quiero usar este conjunto en otro artefacto, ¿cómo lo haría? Tengo la intención de llamar a la dependencia: descomprimir, pero no tengo un artefacto en el repositorio para descomprimir.

Se puede declarar una dependencia de un conjunto (usando la derecha classifier y type en su caso), pero desde la dependencia se resuelven a través del repositorio, que necesita para resolver el primer paso en primer lugar. A continuación, declarar algo como esto (en el que el clasificador es el id del montaje):

<dependency> 
    <groupId>com. ... .virtualHost</groupId> 
    <artifactId>***</artifactId> 
    <version>0.0.1</version> 
    <classifier>...</classifier> 
    <type>zip</type> 
</dependency> 
0

No sé wether esto podría ser útil para usted, sino como un archivo JAR es básicamente un archivo ZIP más el META La información de INF, puede crear su proyecto como un contenedor sin orígenes y agregar las contraseñas xip en src/main/resources sin necesidad de ninguna configuración de complemento.

Si desea que su contenido esté en un lugar diferente, siempre se puede hacer algo como:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.myzip</groupId> 
    <artifactId>myzip-artifact-id</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <build> 
    <resources> 
     <resource> 
     <targetPath>.</targetPath> 
     <filtering>false</filtering> 
     <directory>${basedir}/zipcontent</directory> 
     <includes> 
      <include>**/*</include> 
     </includes> 
     </resource> 
    </resources> 
    </build> 
</project> 

S i usted quiere que su artefacto para ser instalado y ser accesible en un repositorio que tendrá que establecer que para la fase de implementación:

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

1

Creo que se supone que las asambleas que se adjunta automáticamente a la acumulación, pero si eso no funciona, el Maven Build Helper "attach-artifact" goal adjunta un archivo especificado para ser instalado en el repositorio. He usado este complemento para instalar archivos creados por un proceso externo como Ant o NSIS.

Cuestiones relacionadas