maven-2 – 使用Maven创建一个包含带有依赖项的可执行jar的zip文件

我正在尝试创建一个包含多个配置文件和目录的项目的可分发zip,以及我项目的可执行jar.在Maven程序集插件中,我发现了如何使可执行jar具有完全依赖性.但是,我一直无法弄清楚如何在jar后创建zip文件.理想情况下,我想将jar移动到已经具有正确文件和子目录的目录,然后立即压缩整个内容.有没有办法做到这一点?

编辑:

我现在有罐子建筑,还有一个简洁的拉链.我的程序集文件如下所示:

<assembly>
   <id>financials-import-server</id>
   <formats>
      <format>zip</format>
   </formats>
   <dependencySets>
      <dependencySet>
      </dependencySet>
   </dependencySets>
    <files>
       <file>
          <source>target/import-server-1.0.0-SNAPSHOT.jar</source>
          <destName>service.jar</destName>
          <outputDirectory>/</outputDirectory>
       </file>
    </files>
</assembly>

包括我需要的其他文件,比如配置文件或shell脚本,我感觉很舒服.我还有几个问题.如何在zip中创建空目录?另外,如何更改生成的文件的名称?

谢谢您的帮助!

最佳答案
首先,使用Maven JAR插件创建一个executable JAR.

然后,配置程序集以包含所需的所有文件(最终可以添加将启动应用程序的run.bat / run.sh文件),以及all dependencies.

最后,将程序集创建绑定到pom.xml中的包目标:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.2-beta-5</version>
      <configuration>
        <descriptors>
          <descriptor>/path/to/my-assembly.xml</descriptor>
        </descriptors>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
      ...

这样,您只需要运行一个Maven命令mvn clean install,例如,编译项目,然后创建ZIP包.

如果我的答案不符合您的需求,请不要犹豫,更新您的问题,您也可以提供当前的assembly.xml和pom.xml …

编辑

关于你的更新:

我不认为程序集会让你创建一个空目录.一个想法是放置一个空文件(例如readme.txt)并将目录包含在最终的ZIP中.例如,在我的项目中,我想要一个logs /目录,所以我的项目中有一个只包含readme.txt文件的logs /目录:

<fileSets>
    <fileSet>
        <directory>../my-package/logs</directory>
        <outputDirectory>logs/</outputDirectory>
    </fileSet>
</fileSets>

对于创建的ZIP的名称,您可以在pom.xml中指定它:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-4</version>
            <configuration>
                <descriptors>
                    <descriptor>my-assembly.xml</descriptor>
                </descriptors>
                <finalName>TheName</finalName>

如果我是正确的,程序集将使用此名称,添加在assembly.xml文件中定义的ID,并使用适合指定格式的前缀.

转载注明原文:maven-2 – 使用Maven创建一个包含带有依赖项的可执行jar的zip文件 - 代码日志