2010-03-25 17 views

Respuesta

47

Si el descriptor bin montaje predefinido no satisface sus necesidades, entonces usted tiene tres opciones:

  1. Uso del experto-montaje-plugin - El experto-zip-plugin nunca salió porque el complemento de ensamblaje puede hacer todo lo que estaba haciendo el complemento zip, y más, vea MNG-2243.
  2. Usando maven-antrun-plugin (y tal vez el complemento build-helper para adjuntar el zip) - Hay un ejemplo here (y esto parece más detallado que el plugin de ensamblaje al final).
  3. Escribiendo tu propio complemento: ¿por qué harías esto cuando tienes el plugin de ensamblaje?

Personalmente, sólo tiene que utilizar el experto-montaje-plugin con el zip.xml descriptor siguiente:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <id>bin</id> 
    <baseDirectory>/</baseDirectory> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <fileSets> 
    <fileSet> 
     <directory>${project.build.directory}</directory> 
    </fileSet> 
    </fileSets> 
</assembly> 

Y en su POM:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
    <descriptors> 
     <descriptor>src/main/assembly/zip.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> 
+0

No funciona: el "contenedor" incorporado es usado. Y no puedo encontrar la manera de señalar a la costumbre no incorporada. –

+0

Hay una ventaja de usar el plugin antrun sobre el plugin de ensamblaje ya que almacena los tamaños de los archivos de manera diferente dentro del zip.Si estás leyendo el archivo comprimido con 'ZipInputStream' y usas 'getSize()', obtendrás el tamaño de la entrada con cremalleras creadas por antrun, para las cremalleras creadas con ensamblaje devuelve -1. –

11

Si no tiene ninguna necesidad "especial" para el archivo .zip generado, puede usar uno de los descriptores de la Asamblea Maven predefinidos. Los descriptores de ensamblaje predefinidos facilitan la creación rápida y sencilla de conjuntos específicos sin tener que proporcionar su propio descriptor de ensamblaje. Supongamos que quiere usar el descriptor predefinido bin. Luego, en la sección plugins de la sección build de su POM, puede agregar lo siguiente.

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
    <descriptorRefs> 
     <descriptorRef>bin</descriptorRef> 
    </descriptorRefs> 
    </configuration> 
</plugin> 

Por supuesto, como siempre con Maven, si quieres hacer algo más allá de la configuración por defecto, usted tiene que crear su propia configuración, y en este caso, eso significa que su propio descriptor de montaje.

La lista de descriptores predefinidos está documentada here.

+0

No malas opciones. Sin embargo, al final de mi proceso, el directorio de destino simplemente contiene un archivo exe y un directorio con otros archivos exe: al linstallers. Simplemente deseo comprimirlos todos juntos. – Yaneeve

+0

¿Su problema es que las descripciones predeterminadas van a empaquetar más de lo que necesita, como el contenido de las carpetas de trabajo, etc.? ¿Es el caso que hay una carpeta específica bajo el objetivo que desea empaquetar (por ejemplo, '$ {project.build.directory}/installers') pero quiere que se omitan los otros directorios? ¿O tienes algún otro objetivo? – RTBarnard

+0

Había eliminado todos los archivos y directorios no deseados del directorio $ {project.build.directory} y solo deseo cerrar completamente su contenido. Si no tiene una sugerencia mejor que la de Pascal, supongo que tendré que crear ese archivo de ensamblaje "redundante" como lo mostró y optar por su solución ... – Yaneeve

Cuestiones relacionadas