首页 > 解决方案 > 提取从 maven 程序集插件创建的 zip 文件时出错

问题描述

我正在使用 maven 程序集插件zip从同一项目中的另一个 maven 模块创建打包资源。

Parent_project |_module1 |_resources |_templates |_abc.xml |_module2 |_resources |_build-config.xml

下面是我的build-config.xml文件。

<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>bundle</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>${basedir}/../module1/src/main/resources/templates</directory>
            <includes>
                <include>*.xml</include>
            </includes>
            <outputDirectory>/testdir</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>  

我可以将资源复制到testdirzip 文件根目录中命名的子目录。(我可以通过查看 zip 文件而不提取它来观察这一点。)但是如果我尝试提取 zip,它会给我以下错误。 There was an error while extracting the sample.zip. "sample/testdir/abc.xml": Not a directory.

我正在使用带有 maven 程序集插件版本 -1.1.2 的 Ubuntu 18

有人可以在这里指出我的问题吗?

标签: zipmaven-assembly-pluginubuntu-18.04

解决方案


我尝试了一段时间并在下面观察。通过 UI 选项提取会导致错误。如果我要使用该unzip ./myzip.zip -d .命令,则提取成功。

但我找到了一个解决方法,如下所示。

  1. 首先创建一个空目录。

    <fileSet> <!-- Create empty directory --> <outputDirectory>./templates</outputDirectory> <excludes> <exclude>**/*</exclude> </excludes> </fileSet>

  2. 将资源复制到目录。

    <fileSet> <directory>${basedir}/test</directory> <includes> <include>*.xml</include> </includes> <outputDirectory>./templates</outputDirectory> </fileSet> 此方法在提取 zip 时解决了该问题。干杯!


推荐阅读