我正在将项目从 Ant 迁移到 Maven。我需要交付的最终发行版是一个 zip,其中包含一个可执行 jar 及其所有依赖项。这是我的pom的一部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<finalName>ProjectDistribution</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>fullQualifiedNameToMainClass</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/dep.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
<execution>
<id>dist</id>
<phase>assembly</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
这是汇编文件:
<assembly>
<id>dist</id>
<formats>
<format>zip</format>
</formats>
<!-- 1st approach-->
<!--files>
<file>
<source>
/target/ProjectDistribution.jar
</source>
<outputDirectory>/</outputDirectory>
</file>
</files-->
<fileSets>
<!-- 2nd approach-->
<!--fileSet>
<directory>/target</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet-->
<fileSet>
<directory>/HelpFiles</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.*</include>
</includes>
</fileSet>
</fileSets>
我运行 1.- mvn compile、2.- mvn package 和 3.- mvn assembly:single
我正在处理的问题是
它确实生成了包含所有依赖项的 jar,它确实生成了 zip,但它不包括 zip 中的 jar。我非常需要想办法让程序集首先生成 jar 并等到它被创建(因为它的大小是 5 MB)然后创建 zip。现在第一种和第二种方法 - 从程序集文件中 - 被注释掉了,但是,我已经使用了这两种方法,但它们似乎都不起作用。
任何帮助将不胜感激!
埃里克