这是在我的pom.xml中:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>tahrir.TrMain</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
您可以查看整个pom.xml here。
当我运行“mvn -DskipTests = true assembly:assembly”时,这是output。
请注意,它似乎在构建tahrir/target/tahrir-0.0.1-SNAPSHOT.jar
但不是tahrir/target/tahrir-0.0.1-SNAPSHOT-jar-with-dependencies.jar
。
为什么不构建jar-with-dependencies,因为这是我在pom中指定的descriptionRef?这之前工作正常,我不知道可能会有什么改变来打破它......?
答案 0 :(得分:5)
$ mvn -DskipTests = true assembly:assembly
您似乎直接调用assembly
插件的assembly
目标,而不是像install
或package
那样使用maven生命周期。
[INFO] --- proguard-maven-plugin:2.0.4:proguard(默认)@ tahrir ---
在程序集完成之前,proguard plugin
在中启动。它会查找尚未存在的 jar-with-dependencies 。
编辑:您可以尝试通过添加以下内容将程序集插件明确绑定到package
阶段:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>tahrir.TrMain</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
然后根据需要运行mvn package
或mvn install
跳过测试。
答案 1 :(得分:3)
(不是一个明确的答案,但评论太长了)
我注意到我的所有项目都包含以下的程序集插件:
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
请注意,executions
是descriptorRefs
的兄弟。
试试吧。
此外:
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
规范程序集插件的版本也是一种很好的做法。
[编辑/更正:执行,不执行]