首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven-javadoc-plugin中断mvn发布:执行

maven-javadoc-plugin中断mvn发布:执行
EN

Stack Overflow用户
提问于 2014-09-22 22:08:02
回答 7查看 37.3K关注 0票数 36

我试图在过去多次向Nexus服务器发布的三个项目上执行mvn release:perform。今天突然间,由于没有明显的原因,所有的发布都未能执行目标org.apache.maven.plugins:maven-javadoc-plugin:2.10:jar (attach-javadocs)

在启用了完整堆栈跟踪和调试日志记录(-e-X)之后,我看到了关于缺少包的数百行错误:

代码语言:javascript
复制
...    
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 release:prepare没有任何问题的情况下,什么能阻止mvn clean install找到这些包呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-09-23 03:31:24

关于maven-javadoc-plugin的更新,似乎有一连串的问题。见https://issues.apache.org/jira/browse/MJAVADOC-408

我可以看到让mvn使用最新版本的“内置”插件(如果没有其他指定的话)(相对于给定Maven版本的“固定版本”)有一些好处,但这意味着插件维护人员有义务在插件版本上对每个版本的Maven进行回归测试。也许有人错过了什么。

解决方法之一是在组织的超级POM中显式指定以前版本的maven-javadoc-plugin,或者,如果无法匆忙更改超级POM,则使用项目POM:

代码语言:javascript
复制
<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
  </plugins>
</pluginManagement>

我们的CI平台(詹金斯)今天也遇到了同样的问题。希望一个新的maven-javadoc-plugin将随着它的依赖树的更新而被推送(如果这确实是问题的话)。FWIW,我们是在3.0.5 (ya,悲伤的各种原因)。

2014-09-24

整个争论似乎起源于maven-javadoc-plugin维护者对尚未结束发行 in java-1.8.0-openjdk in MJAVADOC-398的响应。我不知道为什么有人会为一个未解决的下游项目缺陷而释放一个破坏性的工作。

更新2014-10-02

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

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

这个故事的寓意

老头子,你被警告了。锁定您的插件依赖关系,因为它们可能会变成流氓。

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

票数 32
EN

Stack Overflow用户

发布于 2014-09-23 10:09:29

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

代码语言:javascript
复制
...
<properties>
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
...
</properties>

在你的pom.xml里

票数 39
EN

Stack Overflow用户

发布于 2016-03-08 00:31:44

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

这就是为什么您的构建只是在mvn release:perform上失败而不是在mvn clean install上失败的原因。

如果您希望更好地控制将使用什么配置(例如,如果您不需要javadocs,或者您希望为javadocs提供您自己的配置),您可以尝试通过添加配置:<useReleaseProfile>false</useReleaseProfile>来禁用这个默认配置文件。

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

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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25983852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档