maven-javadoc-plugin打破了mvn release:perform

Rob*_*sen 33 java maven

我试图执行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
...
Run Code Online (Sandbox Code Playgroud)

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

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

小智 34

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

...
<properties>
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
...
</properties>
Run Code Online (Sandbox Code Playgroud)

在你的pom.xml中

  • 尝试`mvn -Darguments =" - Dmaven.javadoc.failOnError = false"无论什么.将多个参数传递给分叉进程时,请将它们连接到一个-Darguments中.例如`-Darguments =" - DskipITs -Dmaven.javadoc.failOnError = false"` (10认同)
  • 或者,换句话说:`mvn -Dmaven.javadoc.failOnError = false whatever` (4认同)

Dav*_*ski 31

似乎有一系列关于更新的问题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>
Run Code Online (Sandbox Code Playgroud)

我们的CI装备(詹金斯)今天遇到了同样的问题.希望一个新的maven-javadoc-plugin将被推动它的依赖树更新(如果这确实是问题).FWIW,我们在3.0.5(ya,由于各种原因而感到悲伤).

更新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插件版本的构建应该现在恢复正常.

故事的道德启示

Maven-folk,你已被警告过.锁定插件依赖项,因为它们可能会变得流氓.

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

  • 我们在每个插件中都有强大的回归测试,作为IT运行.通常,这些IT为我们提供了我们对此类回归的预期保护.但似乎我们在这里错过了一个用例...需要在http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-javadoc-plugin/src/it/中再添加一个用例 (4认同)

cra*_*rad 11

默认情况下,mvn发行包使用特殊的配置文件.此默认配置文件包括一些默认插件配置(例如自动attach-javadocs作为构建的一部分).

这就是你的构建只是失败mvn release:perform而不是失败的原因mvn clean install.

如果您想以更好的方式控制将要使用的配置(例如,如果您不想使用javadoc,或者您想为javadoc提供自己的配置),可以尝试通过添加以下内容来禁用此默认配置文件.组态: <useReleaseProfile>false</useReleaseProfile>

或者在命令行中: mvn release:perform -DuseReleaseProfile=false

更多信息:http://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html#useReleaseProfile