如何使用 Maven Assembly 插件创建包含特定文件夹及其所有文件的 ZIP 存档?

问题描述 投票:0回答:1

我有一个这样结构的项目

我目前正在尝试创建一个名为“wso2mi.zip”的压缩 zip 文件夹,我的目标是包含“wso2mi”文件夹中包含的所有文件和目录。为此,我在 pom.xml 文件中使用了以下代码

  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <id>create-zip</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                           
                            <appendAssemblyId>false</appendAssemblyId>
                            <finalName>wso2mi</finalName>
                            <includeBaseDirectory>false</includeBaseDirectory>
                            <formats>
                                <format>zip</format>
                            </formats>
                            <fileSets>
                                <fileSet>
                                <directory>${project.basedir}/wso2mi</directory>
                                <outputDirectory>/</outputDirectory>
                                    <includes>
                                    <include>**/*</include>
                                    </includes>
                                </fileSet>
                                </fileSets>

                        </configuration>
                    </execution>
                </executions>
            </plugin>

虽然我试图创建一个名为 wso2mi.zip 的 zip 文件夹,并通过使用上面提到的代码片段将所有内容包含在 wso2mi 文件夹中,但生成的 zip 文件夹除了几个 Maven 文件外不包含任何内容。您能否澄清提供的代码有什么不正确之处?

java maven maven-2 pom.xml maven-plugin
1个回答
0
投票

使用 maven assembly plugin 解决这个问题。 在项目中创建文件夹 assembly,并在 assembly 文件夹下创建一个包含以下内容的 zip.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>zip</id>
    <includeBaseDirectory>false</includeBaseDirectory>

    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.basedir}/wso2mi</directory>
               <includes>
                     <include>**/*</include>
               </includes>
        </fileSet>
    </fileSets>
</assembly>

在 pom.xml 文件中添加了一个插件

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-assembly-plugin</artifactId>

        <executions>

            <execution>

                <phase>package</phase>

                <goals>

                    <goal>single</goal>

                </goals>

                <configuration>

                                <includeBaseDirectory>false</includeBaseDirectory>

                    <appendAssemblyId>false</appendAssemblyId>

                    <descriptors>

                        <descriptor>${project.basedir}/assembly/zip.xml</descriptor>

                    </descriptors>

                    <outputDirectory>${project.build.directory}/resources</outputDirectory>

                    <destFileName>${wso2esbname}-${wso2esbversion}.${wso2esbext}</destFileName>

                </configuration>

            </execution>

        </executions>

    </plugin>
© www.soinside.com 2019 - 2024. All rights reserved.