我正在尝试对过去 多次 发布到我们的 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:perform
在 mvn clean install
和 mvn release:prepare
没有任何问题时找到这些包?
原文由 Rob Johansen 发布,翻译遵循 CC BY-SA 4.0 许可协议
似乎有一系列关于更新至
maven-javadoc-plugin
的问题。请参阅 https://issues.apache.org/jira/browse/MJAVADOC-408 。我可以看到一些好处
mvn
使用最新版本的“内置”插件,如果没有另外指定(相对于给定 Maven 版本的“固定版本”),但这意味着插件维护者有义务在插件发布时对每个版本的 Maven 进行回归测试。也许遗漏了什么。一种解决方法是在组织的超级 POM 中显式指定
maven-javadoc-plugin
的先前版本,或者,如果无法快速更改超级 POM,则为项目 POM:我们的 CI 钻机 (Jenkins) 今天遇到了同样的问题。希望新的
maven-javadoc-plugin
将随着它的依赖树更新而被推送(如果这确实是问题)。 FWIW,我们使用的是 3.0.5(是的,由于各种原因很难过)。更新时间 2014-09-24
整个 hubub 似乎起源于
maven-javadoc-plugin
维护者对 MJAVADOC-398 中java-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 的副本关闭。