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

san*_*ity 5 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>
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看整个pom.xml .

这是我运行"mvn -DskipTests = true assembly:assembly"时的输出.

请注意,它似乎是建设
tahrir/target/tahrir-0.0.1-SNAPSHOT.jar
但不是
tahrir/target/tahrir-0.0.1-SNAPSHOT-jar-with-dependencies.jar.

为什么不构建jar-with-dependencies,因为这是我在pom中指定的descriptionRef?这之前工作正常,我不知道可能会有什么变化来打破它......?

Rag*_*ram 5

$ mvn -DskipTests = true assembly:assembly

看起来你是直接调用插件的assembly目标,assembly而不是使用像install或的maven生命周期package.

[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>
Run Code Online (Sandbox Code Playgroud)

然后根据需要运行mvn packagemvn install跳过测试.

  • +1,因为 `mvn assembly:single` 对我有用。不过,我仍然不确定为什么“mvn package”仍然没有。你能详细说明一下吗? (2认同)