Java Maven汇编插件不再生成依赖的jar了,为什么?

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

这在我的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>

这就是我运行“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>