我正在尝试创建一个依赖于内置程序集 jar-with-dependencies
输出的程序集。生成的程序集特定于某个架构。
例如我想创建一个 ZIP,其中包含 jar-with-dependencies
输出的 JAR 以及脚本文件和库目录。
我已经尝试过以下方法。在 pom.xml
文件中:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<descriptors>
<descriptor>src/main/assembly/linux64.xml</descriptor>
<descriptor>src/main/assembly/windows64.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass>es.entrees.BoxOffice</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
然后是描述 rune 件。其中之一:
<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>linux64</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>target/${project.artifactId}-${project.version}-jar-with-dependencies.jar</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
...
</depdendencySets>
</assembly>
但是自定义描述符会先运行,而 jar-with-dependencies
的输出尚未出现。
我应该使用子模块吗?
最佳答案
您需要对 maven-assemble-plugin
执行 2 次:
- 第一个绑定(bind)到
prepare-package
阶段,将创建jar-with-dependencies
。 - 另一个绑定(bind)到
包
,将创建 zip 文件。
在构建生命周期中,prepare-package
阶段在 package
阶段之前运行,因此这可确保 JAR 在 ZIP 之前构建。此外,它还记录了创建 JAR 准备最终打包(即 ZIP 文件)的事实。
示例 pom.xml
为:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>make-jar-with-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>es.entrees.BoxOffice</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>make-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/linux64.xml</descriptor>
<descriptor>src/main/assembly/windows64.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
通过以下内容,使用 mvn clean install
运行 Maven 将正确创建 ZIP。
关于java - Maven 程序集依赖程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136038/