【问题标题】:Maven assembly plugin not producing jar-with-dependencies any more, why?Maven 程序集插件不再产生 jar-with-dependencies,为什么?
【发布时间】:2011-08-03 01:32:15
【问题描述】:

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

既然这是我在 pom 中指定的 descriptionRef,为什么不构建 jar-with-dependencies?这之前工作正常,我不知道可能发生了什么改变来破坏它......?

【问题讨论】:

  • 您是否“使用 -e 开关重新运行 Maven”?
  • 是的,但这只是一个详尽的解释,它找不到 tahrir-0.0.1-SNAPSHOT-jar-with-dependencies.jar 文件 - 它没有解释为什么程序集插件没有t 生成该文件 :-(
  • 这曾经工作过,只是停止工作? (你在标题中提到了“不再”。)
  • 我进行了各种更改,重新安装了 Eclipse,坦率地说,要找出破坏它的确切更改将是一个严重的 PITA:-/
  • 坦率地说,除非您仅从 eclipse 构建,否则我看不出 eclipse 与此有什么关系。你从命令行得到相同的结果吗?

标签: java maven-2 maven


【解决方案1】:

$ mvn -DskipTests=true 程序集:程序集

看起来你是直接调用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 跳过测试。

【讨论】:

  • “mvn package”和“mvn install”都不起作用。您介意详细说明我需要做些什么来修改 pom 以使其有效吗?整个 pom.xml 与问题相关联。我将不胜感激。
  • @sanity。使用可能的解决方案编辑答案。顺便说一句,assembly:assemblyassembly:single 弃用了
  • +1 因为mvn assembly:single 为我工作。不过,我仍然不确定为什么mvn package 仍然没有。你能详细说明一下吗?
【解决方案2】:

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

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

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

指定程序集插件的版本也是一个好习惯。

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

【讨论】:

  • 试过你的建议,但没有区别,不幸的是:-(
  • 嗯。值得一试。注意我会删除这个非答案。
  • 请不要删除它可能会帮助其他人 +1 说服你不要删除 :)
  • 你的意思是“executions”是descriptorRefs的兄弟吗?这就是我假设你的意思(无论如何它都不起作用)
猜你喜欢
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 2012-01-31
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多