Java 在maven中创建zip,并在jar旁边添加其他文件

Java 在maven中创建zip,并在jar旁边添加其他文件,java,eclipse,maven,zip,pom.xml,Java,Eclipse,Maven,Zip,Pom.xml,我唯一的Maven经验是包含其他库,因此我需要一个非常基本的解释,说明如何使用Eclipse在Maven中实现这些功能 我想定期创建我的罐子。然后我想再拿3个文件,把所有文件放在一个zip文件中。我的zip的内容应该如下所示: A.jar B.txt C.txt D.bat 我知道我必须在我的pom.xml文件中插入某些目标。我已经看到了关于堆栈溢出(即)的帖子,内容与此类似。我还尝试了Maven文档,如。我是否已经需要任何Maven插件,或者仍然是Maven核心的东西 但我的技能还不足以为我

我唯一的Maven经验是包含其他库,因此我需要一个非常基本的解释,说明如何使用Eclipse在Maven中实现这些功能

我想定期创建我的罐子。然后我想再拿3个文件,把所有文件放在一个zip文件中。我的zip的内容应该如下所示:

A.jar
B.txt
C.txt
D.bat
我知道我必须在我的
pom.xml
文件中插入某些目标。我已经看到了关于堆栈溢出(即)的帖子,内容与此类似。我还尝试了Maven文档,如。我是否已经需要任何Maven插件,或者仍然是Maven核心的东西

但我的技能还不足以为我的案件传递这些信息

需要创建自定义工件时,需要使用。我强烈建议您阅读Maven的书,开始使用程序集。本章包含关于Maven程序集创建的深入解释,并且易于阅读

基本上,程序集是在程序集的帮助下创建的。以下程序集描述符将在zip存档的根目录中包含项目主工件。您可以在此处添加更多
声明,以将自定义文件添加到存档中(逻辑相同)


装配id
拉链
假的
${project.build.directory}/${project.build.finalName}.${project.packaging}
/
然后你只需要在POM中声明这个插件。在这种情况下,插件绑定到
阶段,并使用上面的描述符进行配置。默认情况下,程序集id附加到归档文件的名称:我在此处删除了它


maven汇编插件
2.5.5
包裹
单一的
assembly.xml
假的
运行
mvn clean package
时,您将看到在
target
目录中创建了一个zip存档

+ project 
    + src/main/java
    + src/main/resources
    + src/main/config
            +B.txt
            +C.txt
            +D.bat
    + src/main/assembly
            +bin.xml
    +pom.xml
bin.xml

<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.basedir}/src/main/config</directory>
      <outputDirectory>/</outputDirectory> 
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>*.jar</include>
      </includes>
    </fileSet> 
  </fileSets>
</assembly>
没有在src/main/resources中添加B.txt、C.txt、D.bat,因为将它们放在CLASSSPATH中并不好


解决方案是maven assembly插件,如引用()的答案中所述。您需要做的是将maven assembly插件包含到pom.xml中,并在src/main/assemble中创建一个定制的assembly.xml。一般来说,assembly.xml中的文件集定义了创建的归档中要包含的内容。调用mvn clean install后,新的zip归档文件应该在您的项目目标文件夹中可用。希望这有帮助…程序集描述符的默认位置是
src/assembly
…看,我不理解变量的用法:${project.build.directory}/${project.build.finalName}.${project.packaging}在哪个部分包括我的文件A、B、,C和D?@BerndErnst变量在这里,因此主工件的部分不是硬编码的,仅此而已。关于文件A到D,正如我在回答中所说的,您可以为每个文件添加
元素。这取决于你的目录结构,所以我不能给出更具体的答案。
<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/bin.xml</descriptor>
        </descriptors>
        <appendAssemblyId>false</appendAssemblyId>
    </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>
        </execution>
    </executions>
</plugin>
+ artifactId-version.zip
    + B.txt
    +C.txt
    +D.txt
    +artifactId-version.jar