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

jgovgodb  于 2023-05-16  发布在  Maven
关注(0)|答案(1)|浏览(247)

我有一个结构类似于

的项目
我目前正在尝试创建一个名为“www.example.com”的压缩zip文件夹wso2mi.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>

虽然我试图创建一个名为www.example.com的zip文件夹wso2mi.zip,并利用上面提到的代码片段将所有内容包含在wso2mi文件夹中,但生成的zip文件夹除了几个Maven文件外不包含任何内容。你能解释一下提供的代码有什么不正确的地方吗?

js4nwp54

js4nwp541#

用maven汇编插件解决这个问题。在项目内创建了一个文件夹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>

相关问题