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

我试图在过去多次发布到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 Web应用程序)实际上都是从Intellij启动的,没有任何问题-显然,我实际上并没有丢失数百个软件包。

mvn release:performmvn clean install没有任何问题时,是什么可以阻止mvn release:prepare查找这些软件包?

参考方案

关于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维护者对yet-to-be-closed issue中java-1.8.0-openjdk中的MJAVADOC-398的响应。我不知道为什么有人会针对未解决的下游项目缺陷发布突破性的解决方法。

更新2014-10-02

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

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

故事的道德启示

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

P.S. MJAVADOC-408已作为MJAVADOC-407的副本关闭。

在一个Java应用程序中需要两个不同版本的JAR - java

我有一个Java应用程序,其中包含两个第三方JAR(Amazon Kinesis和MaxMind GeoIP2),每个都使用不同版本的Jackson。两种版本的Jackson都不能与两个第三方JAR一起使用。此外,我正在运行Apache的maven JAR插件-这将创建一个包含所有依赖类的uber JAR。鉴于我无法更改第三方JAR,我不知道如何才能使每个第…

创建由Maven项目构建的工件列表 - java

有没有一种方法可以创建通过运行创建的所有工件的列表mvn clean install 与输出类似:mvn mvn dependency:tree/list 参考方案 有一种方法可以做到这一点:mvn -q -Dexec.executable='echo' -Dexec.args='${project.groupId} ${pro…

将Eclipse Java项目转换为Maven模块项目 - java

我有Java项目,我想转换一个多模块项目(模块)。我有一个父项目,我想将现有项目添加到父项目中。我喜欢eclipse样式的文件结构,是否可以在Parent中添加现有项目。谢谢,问候和梅塔,一郎行 参考方案 首先在所有项目中创建pom.xml文件,然后:老套:运行mvn eclipse:eclipse,切换到eclipse并执行Import > Exis…

是否存在可以透明地构建请求的但缺少本地工件的Maven存储库? - java

我们正在美化现有的开发流程,并且发现,如果我们新的内部Maven工件存储库可以透明地触发构建缺失的内部工件,那么这将使后勤工作变得更加简单。换句话说,开发人员需要在发行版X.Y.Z中处理依赖于我们自己的组件B的组件A,并且由于某种原因该资源在存储库中不存在。但是,我们知道在给定所需的发行版号的情况下,确切地如何构建B的发行版,并且拥有一个可脚本化的过程来检出…

如何列出JAR的依赖项 - java

有没有一种工具可以列出包含JAR中引用的(第三方)类的第三方“软件包”?假设它将从JAR文件定义中识别出什么是“home”包,并且它将打印出JAR中所引用的第三方类的完全合格名称(直到第3级)的列表。org.apache.commons org.apache.maven javax.servlet.jsp org.eclipse.persistence or…