Java Maven汇编插件不再生成依赖的jar了,为什么?
这在我的pom.xml中:Java Maven汇编插件不再生成依赖的jar了,为什么?,java,maven-2,maven,Java,Maven 2,Maven,这在我的pom.xml中: <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <ar
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>tahrir.TrMain</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
这就是我运行“mvn-DskipTests=true assembly:assembly”的时候
请注意,它似乎正在构建
tahrir/target/tahrir-0.0.1-SNAPSHOT.jar
但不是
tahrir/target/tahrir-0.0.1-SNAPSHOT-jar-with-dependencies.jar
既然这是我在pom中指定的descriptionRef,为什么不使用依赖项构建jar呢?这是正常工作之前,我不知道什么可能会改变打破它…?(不是一个明确的答案,但太长的评论)
我注意到,我的所有项目都包括以下组装插件:
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
规范汇编插件的版本也是一个很好的实践
[编辑/更正:执行,不执行]
$mvn-DskipTests=true程序集:程序集
看起来您是在直接调用assembly
插件的assembly
目标,而不是像install
或package
那样使用maven生命周期
[信息]---proguard maven插件:2.0.4:proguard(默认)@tahrir---
而proguard插件
在组装完成之前启动。它查找具有依赖项的jar,而依赖项目前还不存在
编辑:通过添加以下内容,您可以尝试将程序集插件显式绑定到包
阶段:
<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>
maven汇编插件
2.2.1
带有依赖项的jar
塔利尔
组装
包裹
单一的
然后运行mvn包
或mvn安装
根据需要跳过测试。您是否“使用-e开关重新运行Maven”?是的,但这只是一个详细的解释,它找不到tahrir-0.0.1-SNAPSHOT-jar-with-dependencies.jar文件-它没有解释汇编插件为什么没有生成该文件:-(这曾经奏效,但只是停止了运作?(你在标题中提到了“不再”)我做了各种更改,重新安装了Eclipse,坦率地说,要找出破坏它的确切更改将是一个严重的问题:-/坦白地说,我不知道Eclipse与此有什么关系,除非您仅从Eclipse进行构建。您从命令行获得相同的结果吗?尝试了您的建议,但没有区别,不幸的是:-(嗯,值得一试。请注意,我将在一点时间内删除这个非答案。请不要删除它可能会帮助其他人+1说服您不要删除:)您的意思是“执行”是描述符REFS的兄弟姐妹吗?这就是我假设您的意思(不管它是否工作)“mvn包”和“mvn安装”都不起作用有效。你介意详细说明我需要做些什么来修改pom以使其有效吗?整个pom.xml都是从这个问题链接而来的。我将不胜感激。@sanity。用一个可能的解决方案编辑答案。顺便说一下,assembly:assembly
被弃用,取而代之的是assembly:single
+1,因为mvn assembly:single
对我有效。我仍然不确定为什么mvn包
仍然无效。你能详细说明一下吗?
<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>