2010-09-15 37 views
7

Estoy tratando de crear un archivo zip distribuible de mi proyecto que contenga varios archivos y directorios de configuración, así como el archivo ejecutable de mi proyecto. En el complemento ensamblador Maven, he encontrado cómo crear el contenedor ejecutable con dependencias completas. Sin embargo, no he podido averiguar cómo crear el archivo comprimido alrededor del contenedor una vez que se ha creado. Idealmente, me gustaría mover el contenedor a un directorio que ya tenga los archivos y subdirectorios correctos, luego comprimir todo al mismo tiempo. ¿Hay alguna manera de hacer esto?Uso de Maven para crear un archivo zip que contiene un archivo jar ejecutable con dependencias

edición:

ahora tengo el edificio frasco, y una cremallera rudimentaria así. Mi archivo de ensamblaje se ve así:

<assembly> 
    <id>financials-import-server</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <dependencySets> 
     <dependencySet> 
     </dependencySet> 
    </dependencySets> 
    <files> 
     <file> 
      <source>target/import-server-1.0.0-SNAPSHOT.jar</source> 
      <destName>service.jar</destName> 
      <outputDirectory>/</outputDirectory> 
     </file> 
    </files> 
</assembly> 

Me siento cómodo incluyendo los otros archivos que iba a necesitar, tales como archivos de configuración o scripts de shell. Me quedan algunas preguntas. ¿Cómo crearía directorios vacíos dentro del zip? Además, ¿cómo cambio el nombre del archivo que se produce?

¡Gracias por la ayuda!

Respuesta

5

Primero, use el plugin Maven JAR para crear un executable JAR.

Luego, configure su ensamblaje para incluir todos los archivos necesarios (eventualmente puede agregar un archivo run.bat/run.sh que iniciará la aplicación), y también all dependencies.

Por último, vincular a la creación de montaje a su meta paquete en el pom.xml:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
     <configuration> 
     <descriptors> 
      <descriptor>/path/to/my-assembly.xml</descriptor> 
     </descriptors> 
     </configuration> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>single</goal> 
      </goals> 
     </execution> 
     </executions> 
     ... 

esta manera, usted sólo tendrá que ejecutar un comando Maven mvn clean install por ejemplo, para compilar el proyecto y, a continuación, crea el Paquete ZIP

No dude en actualizar su pregunta si mi respuesta no se ajusta a sus necesidades, y también se puede dar a su actual assembly.xml y pom.xml ...


Editar

En cuanto a su actualización:

No creo que el conjunto te permita crear un directorio vacío. Una idea es poner un archivo vacío (o un readme.txt por ejemplo) e incluir el directorio en el ZIP final. Por ejemplo, en mi proyecto, yo quiero tener un directorio logs/, así que tengo un directorio logs/ en mi proyecto que sólo contiene un archivo readme.txt:

<fileSets> 
    <fileSet> 
     <directory>../my-package/logs</directory> 
     <outputDirectory>logs/</outputDirectory> 
    </fileSet> 
</fileSets> 

para el nombre de la postal creada, puede especificar que en el pom.xml:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-4</version> 
      <configuration> 
       <descriptors> 
        <descriptor>my-assembly.xml</descriptor> 
       </descriptors> 
       <finalName>TheName</finalName> 

Si estoy en lo cierto, el montaje se utiliza este nombre, añadir el ID definido en el archivo assembly.xml, y utiliza el prefijo adaptado al formato especificado.

+0

Gracias, trabajé un poco basado en esto, e hice algunos progresos. Luego me quedé atascado de nuevo. ¿Alguna sugerencia? – Zoe

+0

@ZoeGagnon He actualizado mi respuesta. – romaintaz

+0

Gracias. Tu respuesta es fantástica y muy útil. – Zoe

Cuestiones relacionadas