我需要将jar A及其所有依赖项B.jar,C.jar等打包成一个平面zip文件,即我想创建一个具有文件结构的zip(或jar)工件
A.jar
B.jar
C.jar
...
并将其部署为A.jar
的旁边工件。请注意,工件不应该被解压缩,而只是并排放置在副工件中,没有任何目录结构。
如何使用Maven实现这一目标?
原因是我们的生产环境需要获取一个解压缩到目录中的zip文件。之后,启动指定的Main类。
答案 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文件。