maven-javadoc-plugin 中断 mvn release:perform

新手上路,请多包涵

我正在尝试对过去 多次 发布到我们的 Nexus 服务器的三个项目执行 mvn release:perform 。今天突然间,没有明显的原因,所有版本都无法执行目标 org.apache.maven.plugins:maven-javadoc-plugin:2.10:jar (attach-javadocs)

打开完整堆栈跟踪和调试日志记录( -e-X ),我看到数百行关于丢失包的错误:

 ...
package org.apache.http does not exist
package org.slf4j does not exist
package org.joda.time does not exist
...

但是,所有这些包都在我的本地存储库和 Nexus 服务器中。此外,我没有从 mvn clean install 中得到任何这些错误,而且所有项目(Java 网络应用程序)实际上都是从 Intellij 启动的,没有任何问题——所以很明显我实际上并没有丢失数百个包。

是什么阻止了 mvn release:performmvn clean installmvn release:prepare 没有任何问题时找到这些包?

原文由 Rob Johansen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 444
2 个回答

似乎有一系列关于更新至 maven-javadoc-plugin 的问题。请参阅 https://issues.apache.org/jira/browse/MJAVADOC-408

我可以看到一些好处 mvn 使用最新版本的“内置”插件,如果没有另外指定(相对于给定 Maven 版本的“固定版本”),但这意味着插件维护者有义务在插件发布时对每个版本的 Maven 进行回归测试。也许遗漏了什么。

一种解决方法是在组织的超级 POM 中显式指定 maven-javadoc-plugin 的先前版本,或者,如果无法快速更改超级 POM,则为项目 POM:

 <pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
  </plugins>
</pluginManagement>

我们的 CI 钻机 (Jenkins) 今天遇到了同样的问题。希望新的 maven-javadoc-plugin 将随着它的依赖树更新而被推送(如果这确实是问题)。 FWIW,我们使用的是 3.0.5(是的,由于各种原因很难过)。

更新时间 2014-09-24

整个 hubub 似乎起源于 maven-javadoc-plugin 维护者对 MJAVADOC-398java-1.8.0-openjdk 中一个 尚未解决的问题 的回应。我不知道为什么有人会针对未解决的下游项目缺陷发布突破性的解决方法。

更新 2014-10-02

MJAVADOC-406 已经解决,并且有一个 2.10.1 版本 maven-javadoc-plugin 在 Maven Central 和您附近的许多存储库中可用。

使用未固定的 javadoc 插件版本的构建现在应该恢复正常。

故事的道德启示

Maven-folk,你已经被警告过。锁定您的插件依赖项,因为它们可能会流氓。

PS, MJAVADOC-408 已作为 MJAVADOC-407 的副本关闭。

原文由 David J. Liszewski 发布,翻译遵循 CC BY-SA 4.0 许可协议

解决此问题的另一种方法是添加以下属性:

 ...
<properties>
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
...
</properties>

在你的 pom.xml

原文由 Frédéric Meunier 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题