web-dev-qa-db-fra.com

Déballez les fermetures éclair intérieures dans Zip avec Maven

Je peux décompresser le fichier Zip via le plugin maven-dependency, mais actuellement j'ai le problème que dans ce fichier Zip, d'autres fichiers Zip sont inclus et j'ai besoin de les décompresser également. Comment puis-je faire ceci?

37
khmarbaise

Vous pouvez décompresser n'importe quel fichier en utilisant le plugin ant task runner:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>prepare</id>
            <phase>validate</phase>
            <configuration>
                <tasks>
                    <echo message="prepare phase" />
                    <unzip src="zips/archive.Zip" dest="output/" />
                    <unzip src="output/inner.Zip" dest="output/" />
                    <unzip dest="output">
                      <fileset dir="archives">
                        <include name="prefix*.Zip" />
                      </fileset>
                    </unzip>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
43
Boris Pavlović

Utiliser ANT n'est plus cool;)

http://maven.Apache.org/plugins/maven-dependency-plugin/examples/unpacking-artifacts.html

Exemple de code pour décompresser le fichier Zip (archive.Zip):

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack</id>
            <phase>process-resources</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>foo</groupId>
                        <artifactId>archive</artifactId>
                        <version>1.0-SNAPSHOT</version>
                        <type>Zip</type>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

Fichier archive.Zip doit d'abord être installé dans le référentiel maven. Par exemple avec la tâche Attacher un artefactorg.codehaus.mojo:build-helper-maven-plugin:build-helper:attach-artifact

24
MariuszS

Plugin TrueZIP Maven fonctionne également bien. Exemple de configuration:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>truezip-maven-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <id>copy-package</id>
            <goals>
                <goal>copy</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <verbose>true</verbose>
                <fileset>
                    <directory>outer.Zip</directory>
                    <outputDirectory>${project.build.directory}/outer</outputDirectory>
                </fileset>
                <fileset>
                    <directory>${project.build.directory}/outer/inner.Zip</directory>
                    <outputDirectory>${project.build.directory}/inner</outputDirectory>
                </fileset>
            </configuration>
        </execution>
    </executions>
</plugin>

Exemples officiels

9
palacsint

Vous pouvez également utiliser les dépendances du plugin. Il y a un objectif de décompresser les dépendances (voir http://maven.Apache.org/plugins/maven-dependency-plugin/unpack-dependencies-mojo.html )

3
benzen