使用 Maven 程序集插件创建包含胖 jar (jar-with-dependencies) 的 ZIP 文件
Using maven assembly plugin to create ZIP file containing a fat jar (jar-with-dependencies)
我正在使用 maven assembly-plugin,我想创建一个 ZIP 文件,其中包含一个 fat jar (jar-with-dependencies)。我无法使用 mvn package
在一个 运行 中创建它。我可以取消注释 descriptor
的配置或取消注释 jar-with-dependencies
部分。
pom.xml
的build
部分如下:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
<finalName>sample-documentum-downloader</finalName>
</configuration>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.foo.DownloadDocuments</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
而 dist.xml
是:
<assembly>
<id>dist</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>target/${project.artifactId}.jar</source>
<outputDirectory>/</outputDirectory>
</file>
<file>
<source>data/input/docId.txt</source>
<outputDirectory>data/input/</outputDirectory>
</file>
<file>
<source>data/export/exported_files_will_be_created_here.txt</source>
<outputDirectory>data/export/</outputDirectory>
</file>
<file>
<source>src/main/resources/dfc.properties</source>
<outputDirectory>/</outputDirectory>
</file>
<file>
<source>src/main/resources/dfc.keystore</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<directory>${project.basedir}</directory>
<includes>
<include>*.cmd</include>
<include>README.pdf</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
我如何重组以创建一个包含远 JAR 的 ZIP 运行。
感谢您的支持。
感谢 Tunaki,我的 build
部分现在看起来像这样:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.foo.DownloadDocuments</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
<finalName>sample-documentum-downloader</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
问题是您将 <configuration>
元素声明为插件的全局元素。这意味着所有执行都将继承该配置:assemble-all
以及 jar-with-dependencies
。因此,继承的 <descriptors>
可能与 <descriptorRefs>
.
混淆
您需要将该 <configuration>
元素移动到特定的 assemble-all
执行,就像您对 jar-with-dependencies
执行所做的那样。
我正在使用 maven assembly-plugin,我想创建一个 ZIP 文件,其中包含一个 fat jar (jar-with-dependencies)。我无法使用 mvn package
在一个 运行 中创建它。我可以取消注释 descriptor
的配置或取消注释 jar-with-dependencies
部分。
pom.xml
的build
部分如下:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
<finalName>sample-documentum-downloader</finalName>
</configuration>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.foo.DownloadDocuments</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
而 dist.xml
是:
<assembly>
<id>dist</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>target/${project.artifactId}.jar</source>
<outputDirectory>/</outputDirectory>
</file>
<file>
<source>data/input/docId.txt</source>
<outputDirectory>data/input/</outputDirectory>
</file>
<file>
<source>data/export/exported_files_will_be_created_here.txt</source>
<outputDirectory>data/export/</outputDirectory>
</file>
<file>
<source>src/main/resources/dfc.properties</source>
<outputDirectory>/</outputDirectory>
</file>
<file>
<source>src/main/resources/dfc.keystore</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<directory>${project.basedir}</directory>
<includes>
<include>*.cmd</include>
<include>README.pdf</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
我如何重组以创建一个包含远 JAR 的 ZIP 运行。
感谢您的支持。
感谢 Tunaki,我的 build
部分现在看起来像这样:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.foo.DownloadDocuments</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
<finalName>sample-documentum-downloader</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
问题是您将 <configuration>
元素声明为插件的全局元素。这意味着所有执行都将继承该配置:assemble-all
以及 jar-with-dependencies
。因此,继承的 <descriptors>
可能与 <descriptorRefs>
.
您需要将该 <configuration>
元素移动到特定的 assemble-all
执行,就像您对 jar-with-dependencies
执行所做的那样。