在 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

讓我知道您是否有任何問題並遇到運行此問題的任何問題。