【问题标题】:maven-site plugins 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContentmaven-site 插件 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent
【发布时间】:2018-12-08 01:07:37
【问题描述】:

从今晚开始,maven site 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

【问题讨论】:

标签: java maven


【解决方案1】:

我刚刚开始在构建过程中遇到这个问题。对我有用的是专门定义 maven-site-pluginmaven-project-info-reports-plugin 以及 pom 中的版本号。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-site-plugin</artifactId>
  <version>3.7.1</version>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-project-info-reports-plugin</artifactId>
  <version>3.0.0</version>
</plugin>

【讨论】:

  • 谢谢,我只是在 pom 中添加了 2.7 版的 maven-project-info-reports-plugin,现在可以了。
  • 也为我工作!谢谢。
  • 备案:应该添加到 build/plugins 中。
【解决方案2】:

这是由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 )

我们可以在reporting部分中指定maven-project-info-reports-plugin版本:

<reporting>
        <plugins>           
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.9</version>
            </plugin>           
        </plugins>    
    </reporting>

或者我们可以指定maven-site-plugin 到最新的 3.7.1 比如:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-site-plugin</artifactId>
    <version>3.7.1</version>
</plugin>

build pom 的一部分。

【讨论】:

  • 这才是真正的原因。我想知道是什么(或者更好的是谁)触发了这个更新? maven 从哪里获得这些信息?
  • @mbreck 是的,我们需要为每个 pom 添加配置。
  • 需要在项目插件部分指定 maven-site-plugin 版本才能工作。 “新”报告部分让我很困惑,似乎是多余的。对我来说,这些天 maven 几乎无法使用。
  • 这对我来说非常有效。我在pom.xml&lt;reporting&gt;部分定义了maven-checkstyle-plugin (3.0.0)maven-project-info-reports-plugin (2.9)
  • 它仅在将 maven-project-info-reports-plugin 降级到 v2.9 后才对我有用,即使我使用了 maven-site-plugin v3.7.1
【解决方案3】:

maven 站点插件的版本也需要在构建部分中明确设置。示例如下:

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>3.0.0</version>
            <reportSets>
                <reportSet>
                    <reports>
                        <report>index</report>
                        <report>licenses</report>
                        <report>dependency-info</report>
                    </reports>
                </reportSet>
            </reportSets>
        </plugin>
    </plugins>
</reporting>

<build>
    <plugins>
        <!-- Part of Maven - specified version explicitly for compatibility
             with the maven-project-info-reports-plugin 3.0.0-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.7.1</version>
        </plugin>
    </plugins>
</build>

【讨论】:

  • 谢谢!在遵循 Maven 的入门指南并执行“mvn 站点”时遇到错误。将你的 sn-p 添加到我的 pom.xml 后,命令现在可以工作了。
  • @WallTearer 就是这样。我不知道在控制台或 Eclipse 中键入教程之后它是否有不同的行为(我猜不应该)。无论如何,我想应该更新用户指南。
  • 杰夫就是那个男人。我想是 &lt;build&gt;&lt;reporting&gt; 的分离使它对我有用。
【解决方案4】:

Maven 3 不再支持 Doxia。

使用

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-project-info-reports-plugin</artifactId>
  <version>2.2</version>
</plugin>

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

【讨论】:

    【解决方案5】:

    您确实需要添加更多信息(顺便说一句,我没有投反对票)。

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

    试试:

    • 升级到最新版maven - 3.5.4 ATOW
    • 运行mvn help:effective-pom 并检查哪些版本是 实际上正在解决 - 如果您有来自 CI 或任何地方的旧日志 比较..
    • 显式设置maven-site-plugin 版本 在pluginManagement 部分
    • maven-site-plugin 添加依赖项(见下文)

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

        <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-site-renderer</artifactId>
            <version>1.8.1</version>
        </dependency>
    

    我怀疑将 maven-site-plugin 的版本显式设置为您曾经使用的任何版本(顺便提一下)都会起作用。


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

    【讨论】:

      【解决方案6】:

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

      然而,它对我来说突出的是我什至在运行 mvn 站点目标,我什至不知道我们正在运行而且我们并不真正需要。

      因此,我的解决方法是从我的 mvn arg 中删除站点目标,因为尽管它创建的站点实际上非常有用,但我从不知道我们正在创建它,我们从未在任何地方发布它,并且实际上在每次构建时都将其删除。

      【讨论】:

        【解决方案7】:

        我尝试按照昌华的建议,在我的pom文件中定义maven-project-info-reports-plugin为3.0.0版本,maven-site-plugin为3.7.1,但发现maven站点还是拉在 maven-site-plugin 的 3.3 版中,无论我如何设置它。

        我终于意识到我的问题与我们的项目结构有关。我们有一个父 pom,我们在其中定义了 maven-site-plugin 依赖项,然后由子 pom 继承。但是,构建 pom 文件是独立的,根本没有定义 maven-site-plugin,这使得 maven 可以自己拉入 3.3 版本。我在构建 pom 文件中添加了 maven-site-plugin 依赖项(版本 3.7.1),因此它现在同时存在于构建 pom 文件和父 pom 文件中,现在构建正确使用版本 3.7.1,并再次通过。

        【讨论】:

          【解决方案8】:

          pom.xml 中的以下版本为我解决了这个问题:

                      <plugin>
                          <groupId>org.apache.maven.plugins</groupId>
                          <artifactId>maven-site-plugin</artifactId>
                          <version>3.7</version>
                      </plugin>
                      <plugin>
                          <groupId>org.apache.maven.plugins</groupId>
                          <artifactId>maven-project-info-reports-plugin</artifactId>
                          <version>2.9</version>
                      </plugin>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-30
            • 2014-01-18
            • 1970-01-01
            相关资源
            最近更新 更多