maven-javadoc-plugin中断了mvn版本:perform


问题内容

我想执行mvn release:perform的三个项目,我已经发布到我们的Nexus服务器 众多
,在过去的时间。今天突然,由于没有明显的原因,所有发行版都没有执行目标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
Web应用程序)实际上都是从Intellij启动的,没有任何问题-显然,我实际上并没有丢失数百个软件包。

有什么能阻止mvn release:perform从发现这些包时mvn clean install,并mvn release:prepare没有任何问题?


问题答案:

关于更新到似乎存在一系列问题maven-javadoc- plugin。参见https://issues.apache.org/jira/browse/MJAVADOC-408

mvn如果没有另外指定,我可以看到使用最新版本的“内置”插件的好处(相对于给定Maven版本的“固定版本”),但这意味着插件维护人员必须进行回归测试。在插件发布时针对每个版本的Maven。也许错过了一些东西。

一种解决方法是maven-javadoc-plugin在组织的超级POM中显式指定以前的版本,或者,如果无法迅速更改超级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维护者一个尚未将要关闭的问题java-1.8.0-openjdkMJAVADOC-398。我不知道为什么有人会针对未解决的下游项目缺陷发布突破性的解决方法。

更新2014-10-02

MJAVADOC-406已解决,Maven
Central中有可用的2.10.1版本,maven-javadoc-plugin您附近可能有许多存储库。

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

故事的道德启示

行家,已经被警告。锁定您的插件依赖项,因为它们可能会流氓。

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