![](/img/trans.png)
[英]Using maven assembly plugin to create ZIP file containing a fat jar (jar-with-dependencies)
[英]Combining Jar-with-dependencies and a ZIP file using the Maven assembly plugin
我想將我在JAR中的源代碼與所有依賴項結合起來,並將其與其他文件一起打包成一個zip文件。 我能夠創建一個包含所有依賴項的Jar以及ZIP文件,但我無法將兩者結合起來。
我最終想要zip文件中的以下目錄結構:
裝載機/斌/ shellscript.sh
裝載器/ LIB /罐與 - dependencies.jar
裝載器/應用程序的名字/配置/ config.xml中
這是我的pom文件的摘錄:
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
這是我裝配的摘錄
<assembly>
<id>bin</id>
<!-- Specifies that our binary distribution is a zip package -->
<formats>
<format>zip</format>
</formats>
<baseDirectory>SpreadsheetLoaderApp</baseDirectory>
<fileSets>
<fileSet>
<directory>corporatebondpurchases</directory>
<outputDirectory>${basedir}/corporatebondpurchases/config</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.properties</include>
</includes>
</fileSet>
<fileSet>
<directory>corporatebondpurchases</directory>
<outputDirectory>${basedir}/bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
</fileSets>
</assembly>
以下是部分構建的輸出:
[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ SpreadsheetLoader ---
[INFO] Reading assembly descriptor: src/main/assembly/assembly.xml
[INFO] Building zip: C:\Software\SpringSTS\workspace\SpreadsheetLoader\target\SpreadsheetLoader-0.0.1-SNAPSHOT-bin.zip
[INFO] Building jar: C:\Software\SpringSTS\workspace\SpreadsheetLoader\target\SpreadsheetLoader-0.0.1-SNAPSHOT-jar-with-dependencies
這成功地在目標和ZIP文件下創建了一個Jar(盡管有完整路徑而不是相對路徑)。 我想要的是將Jar文件作為zip文件的一部分包含在內。
編輯:
在研究各種博客文章之后,我已經設法通過使用以下POM和匯編文件來實現這一點
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>dist</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
和相應的匯編文件......
<assembly>
<id>dist</id>
<!-- Specifies that our binary distribution is a zip package -->
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<baseDirectory>SpreadsheetLoader</baseDirectory>
<files>
<file>
<source>target/${project.artifactId}-${project.version}-jar-with-dependencies.jar</source>
<outputDirectory>lib</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<directory>applicationbuild/${buildname}</directory>
<outputDirectory>${buildname}/config</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.properties</include>
</includes>
</fileSet>
<fileSet>
<directory>applicationbuild/${buildname}</directory>
<outputDirectory>bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
<lineEnding>unix</lineEnding>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>./</directory>
<outputDirectory>logs</outputDirectory>
<excludes>
<exclude>*/**</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>./</directory>
<outputDirectory>${buildname}/sourcedata</outputDirectory>
<excludes>
<exclude>*/**</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
這給了我一個很好的簡單目錄結構用於部署目的。 我的主要信息來源來自以下網站:
http://www.drawbackz.com/stack/175442/maven-assembly-plugin-how-to-create-nested-assemblies.html
謝謝
我很滿意上述結果。 然而,這是我第一次嘗試使用Maven。 如果有人有更好的方法,我很樂意接受這個建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.