在 Java 中如何使用 maven-assembly-plugin 创建 .jar / .tar.gz / .zip 存档文件? Maven 和企业项目教程
已发表: 2020-10-07
Maven
真是太神奇了。 拥有如此多的插件,它是目前市场上Best Java Build tool
之一。
我在我所有的项目中都使用它,并且非常依赖它。 构建可能性是无穷无尽的。 前段时间我写了很多关于其他 maven 插件的不同教程,在这篇文章中,我们将讨论maven-assembly-plugin
。
Maven 程序集插件依赖于提供的程序集描述符来指示其执行。
这是以前的 maven 插件教程的列表:
-
maven-war-plugin
– 创建项目 .war 文件。 -
maven-resources-plugin
、maven-dependency-plugin
和maven-jar-plugin
– 构建包含所有依赖项的 Java 项目? -
maven-shade-plugin
– 创建包含所有必需依赖项、属性和资源的基于 Java+Spring 的可执行文件 .jar。
您有以下任何问题吗? 本教程也适用于它。
- 如何使用 Maven 创建 jar 文件?
- 如何使用maven创建具有依赖关系的jar文件
- 使用 pom.xml 创建 jar
- 创建没有依赖关系的maven jar的最佳方法
- 如何创建包含依赖项的maven jar
让我们开始使用 maven-assembly-plugin
第1步
在 Eclipse 环境中创建新的 Maven 项目。 将其命名为CrunchifyMavenBuildPlugins
。 如果您有现有的动态 Web 项目或 Java 项目,则可以使用这些步骤将项目转换为 maven 项目。 将项目转换为 Maven 后,您应该会看到生成了本教程所需的pom.xml
文件。
这是我的项目结构。 我正在使用我现有的项目,该项目在/src/com/crunchify/tutorials
包下共有8 java files
。

第2步
打开项目的 pom.xml 文件添加新的<plugin></plugin>
主要是line 28 to 38
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifyMavenBuildPlugins < / groupId > < artifactId > CrunchifyMavenBuildPlugins < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < name > CrunchifyMavenBuildPlugins < / name > < properties > < project . build . sourceEncoding > UTF - 8 < / project . build . sourceEncoding > < / properties > < dependencies > < dependency > < groupId > wsdl4j < / groupId > < artifactId > wsdl4j < / artifactId > < version > 1.6.3 < / version > < / dependency > < dependency > < groupId > com . google . zxing < / groupId > < artifactId > core < / artifactId > < version > 2.0 < / version > < / dependency > < / dependencies > < build > < plugins > < plugin > < artifactId > maven - assembly - plugin < / artifactId > < version > 2.5.3 < / version > < configuration > < descriptors > < descriptor > src / com / crunchify / assembly / crunchify . xml < / descriptor > < / descriptors > < tarLongFileMode > posix < / tarLongFileMode > < / configuration > < / plugin > < / plugins > < / build > < / project > |
第三步
创建新文件crunchify.xml
并将其放在/src/com/crunchify/assembly
包下。 我们已经在上面的pom.xml
文件中引用了这个文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
< assembly xmlns = "http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd" > < id > bundle < / id > < formats > < format > tar . gz < / format > < format > zip < / format > < format > tar < / format > < / formats > < includeBaseDirectory > false < / includeBaseDirectory > < fileSets > < fileSet > < directory > src / com / crunchify / tutorial < / directory > < outputDirectory > crunchify - output < / outputDirectory > < / fileSet > < / fileSets > < / assembly > |
在这里,我们将项目导出为 3 种不同的<formats>

- 压缩包
- 压缩
- 柏油
<directory>
标签显示 – 获取包src/com/crunchify/tutorial
下的所有内容,并将其放在<outputDirectory>
标签下提到的crunchify-output
文件夹下。
如果您想包含/src
或/resource
文件夹内容之类的所有内容,则可以使用以下不同的变体:
- <目录>
src/com/crunchify/tutorial
</目录> - <directory>
src
</directory> : src 文件夹下的所有内容 - <directory>
resources
</directory> :资源文件夹下的所有内容 - <directory>
/
</directory> : 一切
第四步
右键单击项目 CrunchifyMavenBuildPlugins => Run As
=> Maven build

- 提供目标作为
clean assembly:assembly
- 单击
Apply
- 单击
Run

第 5 步
您应该在控制台上看到BUILD SUCCESS
消息。
1 2 3 4 5 6 7 8 9 |
[ INFO ] --- maven - assembly - plugin : 2.5.3 : assembly ( default - cli ) @ CrunchifyMavenBuildPlugins --- [ INFO ] Reading assembly descriptor : src / com / crunchify / assembly / crunchify . xml [ INFO ] Building tar : / Users / crunchifyjavatutorials / CrunchifyMavenBuildPlugins / target / CrunchifyMavenBuildPlugins - 0.0.1 - SNAPSHOT - bundle . tar . gz [ INFO ] Building zip : / Users / crunchifyjavatutorials / CrunchifyMavenBuildPlugins / target / CrunchifyMavenBuildPlugins - 0.0.1 - SNAPSHOT - bundle . zip [ INFO ] Building tar : / Users / crunchifyjavatutorials / CrunchifyMavenBuildPlugins / target / CrunchifyMavenBuildPlugins - 0.0.1 - SNAPSHOT - bundle . tar [ INFO ] ------------------------------------------------------------------------ [ INFO ] BUILD SUCCESS [ INFO ] ------------------------------------------------------------------------ [ INFO ] Total time : 1.719 s |
第 6 步
NOTE:
您不必执行此步骤。

你收到这个错误了吗? 如果您在构建程序集时看到此错误消息,则必须在 pom.xml 文件中添加以下行。
1 |
< tarLongFileMode > posix < / tarLongFileMode > |
我在第一次尝试时遇到了上述错误。 所以已经将tarLongFileMode
添加到上面的 pom.xml 文件中。
第 7 步
现在how to verify
? 请转到您项目的target
文件夹并运行以下命令以查看您的.tag.gz file contents
。
bash-3.2$ tar zxvf CrunchifyMavenBuildPlugins-0.0.1-SNAPSHOT-bundle.tar.gz

让我知道您是否有任何问题并遇到运行此问题的任何问题。