maven-site plugins 3.3 java.lang.ClassNotFoundException:org.apache.maven.doxia.siterenderer.DocumentContent

从今晚开始,maven网站3.3插件停止工作。

尝试删除本地存储库,但没有更改。 Maven 3.3.9 java 1.8

pom中没有为站点插件定义的配置或依赖项

[WARNING] Error injecting: org.apache.maven.report.projectinfo.CiManagementReport java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent 

我刚刚在构建期间开始解决这个问题。 对我maven-site-plugin是专门定​​义maven-site-pluginmaven-project-info-reports-plugin以及pom中的版本号。

  org.apache.maven.plugins maven-site-plugin 3.3   org.apache.maven.plugins maven-project-info-reports-plugin 2.7  

这是由maven-project-info-reports-plugin更新到3.0.0引起的,并依赖于doxia-site-renderer 1.8(并且有org.apache.maven.doxia.siterenderer.DocumentContent这个类),但maven-site -plugin:3.3依赖于doxia-site-renderer:1.4(并且没有org.apache.maven.doxia.siterenderer.DocumentContent)

我们可以在报告部分中具体使用maven-project-info-reports-plugin版本:

    org.apache.maven.plugins maven-project-info-reports-plugin 2.9    

或者我们可以将maven-site-plugin指定为最新的3.7.1,如:

  org.apache.maven.plugins maven-site-plugin 3.7.1  

在pom的构建部分

我今天在我的一些构建工作中也遇到了这个错误。 上面提到的修复,为maven-site-plugin添加一个具体的依赖项确实可以解决这个问题。

然而,它突出显示的是我甚至运行mvn网站目标的事实,我甚至不知道我们正在运行,我们并不真正需要。

我的修复因此是从我的mvn arg中移除了网站目标,因为虽然它创建的网站实际上非常有用,但我从来不知道我们是在创建它,我们从未在任何地方发布过它,并且实际上每次构建都删除了它。

你真的需要添加更多的信息(我没有downwote BTW)。

IIRC; 如果您没有为绑定到生命周期阶段的插件指定版本,您将获得最新版本。

尝试:

  • 升级到最新版本的maven – 3.5.4 ATOW
  • 运行mvn help:effective-pom并检查实际正在解析的版本 – 如果你有一个来自CI的旧日志或者与之比较的地方..
  • pluginManagement部分中设置maven-site-plugin版本
  • maven-site-plugin添加依赖maven-site-plugin (见下文)

可以在doxia-site-renderer找到org/apache/maven/doxia/siterenderer/DocumentContent

   org.apache.maven.doxia doxia-site-renderer 1.8.1  

我怀疑明确地将maven-site-plugin的版本设置为你曾经使用过的(顺便说一句)可行的。


编辑:在maven插件构建测试中追逐类似问题,在maven-invoker-plugin使用的集成pom中明确设置maven-site-plugin版本(3.7.1 ATOW)对我有用。

我试着按照彰化的建议,将maven-project-info-reports-plugin定义为3.0.0版,将maven-site-plugin定义为我的pom文件中的3.7.1,但发现maven网站仍然在版本3.3中无论我如何设置它,都可以使用maven-site-plugin。

我终于意识到我的问题与我们的项目结构有关。 我们有一个父pom,我们在其中定义了maven-site-plugin依赖项,然后由子pomsinheritance。 但是,构建pom文件是独立的,并没有完全定义maven-site-plugin,这允许maven自己引入3.3版本。 我将maven-site-plugin依赖项(版本3.7.1)添加到build pom文件中,以便它现在存在于build pom文件和父pom文件中,现在构建正确使用版本3.7.1,并再次通过。

maven网站插件的版本也需要在构建部分中明确设置。 这是一个例子:

    org.apache.maven.plugins maven-project-info-reports-plugin 3.0.0    index licenses dependency-info           org.apache.maven.plugins maven-site-plugin 3.7.1    

Maven 3不再支持Doxia。

使用

  org.apache.maven.plugins maven-project-info-reports-plugin 2.2  

参考: https : //maven.apache.org/plugins/maven-site-plugin/maven-3.html