Maven 2 创建maven的zip存档;“目标”;目录

Maven 2 创建maven的zip存档;“目标”;目录,maven-2,plugins,zip,Maven 2,Plugins,Zip,我希望为我的“target”目录(${project.build.directory)创建一个zip存档。对于这样一个简单的任务,使用maven assembly插件似乎有点过分(而且有点复杂-为什么我必须使用另一个文件,即assembly descriptor来完成这样的任务) 我无法在存储库中找到看似更简单的 是否有任何输入?如果您没有任何“特殊”如果需要生成的.zip文件,您可以使用预定义的Maven程序集描述符之一。预定义的程序集描述符使您可以轻松快速地创建特定的程序集,而无需提供自己的

我希望为我的“target”目录(${project.build.directory)创建一个zip存档。对于这样一个简单的任务,使用maven assembly插件似乎有点过分(而且有点复杂-为什么我必须使用另一个文件,即assembly descriptor来完成这样的任务) 我无法在存储库中找到看似更简单的

是否有任何输入?

如果您没有任何“特殊”如果需要生成的.zip文件,您可以使用预定义的Maven程序集描述符之一。预定义的程序集描述符使您可以轻松快速地创建特定的程序集,而无需提供自己的程序集描述符。假设您要使用
bin
预定义描述符。然后在
plu在POM的
build
部分中,您可以添加以下内容

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>bin</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

.

如果预定义的程序集描述符不适合您的需要,则有三个选项:

  • 使用maven汇编插件-maven zip插件从未出现,因为汇编插件可以完成zip插件所做的一切,更多信息,请参阅
  • 使用maven antrun插件(可能还有附加zip的build helper插件)——有一个例子(这看起来比最后的汇编插件更详细)
  • 编写您自己的插件-当您有汇编插件时,为什么要这样做
  • 就我个人而言,我只会使用带有以下
    zip.xml
    描述符的maven assembly插件:

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
      <id>bin</id>
      <baseDirectory>/</baseDirectory>
      <formats>
        <format>zip</format>
      </formats>
      <fileSets>
        <fileSet>
          <directory>${project.build.directory}</directory>
        </fileSet>
      </fileSets>
    </assembly>
    
    
    箱子
    /
    拉链
    ${project.build.directory}
    
    在您的POM中:

    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.6</version>
      <configuration>
        <descriptors>
          <descriptor>src/main/assembly/zip.xml</descriptor>
        </descriptors>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id> <!-- this is used for inheritance merges -->
          <phase>package</phase> <!-- append to the packaging phase. -->
          <goals>
            <goal>single</goal> <!-- goals == mojos -->
          </goals>
        </execution>
      </executions>
    </plugin>
    
    
    maven汇编插件
    2.6
    src/main/assembly/zip.xml
    组装
    包裹
    单身
    
    不错的选项。然而,在我的过程结束时,目标目录只包含一个exe文件和一个包含其他exe文件的目录—al linstallers。我只想将它们全部压缩在一起,所以您的问题是默认描述符会打包得比您需要的更多,例如工作文件夹的内容等。是c吗如果目标下有一个特定文件夹需要打包(例如,
    ${project.build.directory}/installers
    ),但希望省略其他目录?或者您有其他目标吗?我已从${project.build.directory}中删除了所有不需要的文件和目录如果你没有比Pascal更好的建议,我想我只能创建他展示的“冗余”程序集文件,然后选择他的解决方案…不起作用-内置的“bin”使用。我不知道如何指向自定义的非内置。使用antrun插件比使用汇编插件有一个优势,因为它在zip中以不同的方式存储文件大小。如果您使用“ZipInputStream”读取zip并使用“getSize()'您将通过antrun创建的拉链获得入口大小,对于使用assembly创建的拉链,它将返回-1.jeejava.com/zip-file-using-maven-assembly-plugin/