解压缩位于磁盘上的文件(maven-assembly-plugin)

Unzip a file located on disk (maven-assembly-plugin)

我正在尝试输出 运行 项目所需的所有文件到 ./target/dist 文件夹中。我想在准备程序集时捆绑 JRE。 JRE 位于我的项目的基本目录中,包含在一个名为 jre.zip.

的 zip 文件中

如何在./target/dist文件夹中解压./jre.zip

这是我的程序集 XML。

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>dist</id>
    <formats>
        <format>dir</format>
    </formats>
    <baseDirectory>./</baseDirectory>
    <fileSets>
        <fileSet>
            <directory>./</directory>
            <outputDirectory>./jre</outputDirectory>
            <excludes>
                <exclude>*/**</exclude>
            </excludes>
        </fileSet>
    </fileSets>
    <files>
        <file>
            <source>${project.build.directory}/${project.build.finalName}.jar</source>
            <destName>${artifactId}.jar</destName>
            <outputDirectory>./</outputDirectory>
        </file>     
    </files>
</assembly>

虽然您可以使用 Maven Assembly 插件解压依赖项,但我很怀疑它不能与 jre 一起工作....

我建议你在执行 Assembly 插件之前先解压 jre

<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="jre.zip" dest="target/jre"/>
            </tasks>
        </configuration>
        <goals>
            <goal>run</goal>
        </goals>
    </execution>
</executions>