Maven程序集插件不再产生jar-with-dependencies,为什么?

时间:2011-08-03 01:32:16

标签: java maven-2 maven

这是在我的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?这之前工作正常,我不知道可能会有什么改变来打破它......?

2 个答案:

答案 0 :(得分:5)

  

$ mvn -DskipTests = true assembly:assembly

您似乎直接调用assembly插件的assembly目标,而不是像installpackage那样使用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 packagemvn install跳过测试。

答案 1 :(得分:3)

(不是一个明确的答案,但评论太长了)

我注意到我的所有项目都包含以下的程序集插件:

            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>attached</goal>
                    </goals>
                </execution>
            </executions>

请注意,executionsdescriptorRefs的兄弟。

试试吧。

此外:

[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.

规范程序集插件的版本也是一种很好的做法。

[编辑/更正:执行,不执行]