将jar及其依赖项打包到一个副本工件(不生成胖罐)

时间:2017-05-05 13:32:08

标签: java maven

我需要将jar A及其所有依赖项B.jar,C.jar等打包成一个平面zip文件,即我想创建一个具有文件结构的zip(或jar)工件

A.jar
B.jar
C.jar
...

并将其部署为A.jar的旁边工件。请注意,工件不应该被解压缩,而只是并排放置在副工件中,没有任何目录结构。

如何使用Maven实现这一目标?

原因是我们的生产环境需要获取一个解压缩到目录中的zip文件。之后,启动指定的Main类。

1 个答案:

答案 0 :(得分:1)

如果你有一个包含已经依赖的pom文件,你可以使用maven-assembly-plugin和适当的程序集描述符,并且不需要使用maven-dependency-plugin来复制某些东西。你需要有一个如下所示的汇编描述符:

<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>xyz</id>

  <formats>
      <format>zip</format>
  </formats>

  <includeBaseDirectory>false</includeBaseDirectory>

  <dependencySets>
      <dependencySet>
          <outputDirectory>/</outputDirectory>
          <useProjectArtifact>false</useProjectArtifact>
          <unpack>false</unpack>
          <scope>compile</scope>
      </dependencySet>
  </dependencySets>
</assembly>

这应该生成相应的zip文件,其中没有任何文件夹结构,但在其中包含依赖的jar文件。