使用Maven将资源文件夹下的文件添加到zip文件中

时间:2016-02-04 20:42:48

标签: java maven

我在名为zip.xml的文件夹中有一个assembly

<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>archive</id>
    <baseDirectory>/</baseDirectory>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}</directory>
        </fileSet>
        <fileSet>
            <directory>src/main/resources/</directory>
            <includes>
                <include>plugin-descriptor.properties</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

使用mvn clean -U -DskipTests package assembly:assembly构建项目后,我注意到只有jar文件被复制并压缩到存档。

如何将properties文件存档在zip文件中?想要的zip应该在root

中有jar和属性文件

1 个答案:

答案 0 :(得分:1)

您应该定义<files>元素而不是<fileSets>,因为您要复制特定的单个文件而不是目录。在这种情况下,您要复制:

  • 最终的JAR,因此这是${project.build.directory}/${project.build.finalName}.${project.packaging}到ZIP的根目录
  • 将属性文件src/main/resources/plugin-descriptor.properties放入ZIP的根目录

您当前的配置错误,因为您声明要${project.build.directory}下的所有条目,这不是您想要的,因为您只对最终的JAR感兴趣。另外,使用/作为基本目录有点奇怪;最好说我们不想要一个<includeBaseDirectory>false</includeBaseDirectory>

的基本目录

示例配置为:

<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>archive</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>zip</format>
    </formats>
    <files>
        <file>
            <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source>
            <outputDirectory>/</outputDirectory>
        </file>
        <file>
            <source>${basedir}/src/main/resources/plugin-descriptor.properties</source>
            <outputDirectory>/</outputDirectory>
        </file>
    </files>
</assembly>