Maven-Site-Plugins 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent


78

Seit dieser Nacht funktionieren die Plugins von Maven Site 3.3 nicht mehr.

Versuchen Sie, das lokale Repository zu löschen, aber keine Änderung. Maven 3.3.9 Java 1.8

Keine Konfiguration oder Abhängigkeiten in pom für Site-Plugins definiert

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

Antworten:


108

Ich hatte gerade angefangen, dieses Problem auch während der Builds zu bekommen. Was für mich funktioniert hat war, das maven-site-pluginund das maven-project-info-reports-pluginzusammen mit den Versionsnummern im POM spezifisch zu definieren .

<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>

5
Danke, ich füge gerade das Maven-Projekt-Info-Reports-Plugin mit Version 2.7 in POM hinzu und es ist jetzt in Ordnung.
timmy otool

Hat auch für mich gearbeitet! Vielen Dank.
user577736

57

Dies wird durch das auf 3.0.0 aktualisierte Maven-Projekt-Info-Reports-Plugin verursacht, das auf doxia-site-renderer 1.8 basiert (und org.apache.maven.doxia.siterenderer.DocumentContent dieser Klasse hat), aber maven-site -plugin: 3.3 verlassen sich auf doxia-site-renderer: 1.4 (und haben nicht org.apache.maven.doxia.siterenderer.DocumentContent)

Wir können spezifische Maven-Projekt-Info-Berichte-Plugin-Version im Berichtsteil:

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

Oder wir können das Maven-Site-Plugin für die neueste Version 3.7.1 wie folgt angeben:

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

im Build Teil von Pom


Dies ist eigentlich die wahre Ursache. Ich habe mich gefragt, was (oder besser wer) dieses Update ausgelöst hat. Woher bezieht Maven diese Informationen?
ChristopherS

1
@mbreck ja, wir müssen jedem pom config hinzufügen.
Changhua

Die Version des Maven-Site-Plugins muss im Abschnitt Plugins für Projekte angegeben werden, damit sie funktioniert. Der Abschnitt "Neue" Berichte hat mich sehr verwirrt und scheint überflüssig zu sein. Für mich ist Maven heutzutage nahezu unbrauchbar.
Wolfgang Fahl

Das hat bei mir perfekt funktioniert. Ich definierte maven-checkstyle-plugin (3.0.0)und maven-project-info-reports-plugin (2.9)im <reporting>Abschnitt vonpom.xml
user2490003

1
Es funktionierte für mich nur nach dem Downgrade von maven-project-info-reports-plugin auf v2.9, obwohl ich maven-site-plugin v3.7.1
Elayamathy

11

Die Version des Maven-Site-Plugins muss auch im Build-Bereich explizit festgelegt werden. Hier ist das Beispiel:

<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>

2
Vielen Dank! Der Fehler wurde angezeigt, als ich Mavens Erste Schritte folgte und "mvn site" ausführte. Nachdem Sie Ihr Snippet zu meiner pom.xml hinzugefügt haben, funktioniert der Befehl jetzt.
AbstractVoid

1
@ WallTearer das war genau der Fall. Ich weiß nicht, ob es nach den Tutorials, die in der Konsole oder in Eclipse eingegeben werden, ein anderes Verhalten hat (sollte ich nicht raten). Wie auch immer, ich denke, die Bedienungsanleitung sollte aktualisiert werden.
foxTox

TheJeff ist der Mann. Ich denke, dass es das ist<build> vs <reporting>Trennung, die es für mich funktionieren ließ.
Javabeangrinder


1

Sie müssen wirklich weitere Informationen hinzufügen (ich habe BTW nicht abgelehnt).

IIRC; Wenn Sie keine Version für ein Plugin angeben, das an Lebenszyklusphasen gebunden ist, erhalten Sie die neueste Version.

Versuchen:

  • Upgrade auf die neueste Version von maven - 3.5.4 ATOW
  • Laufen mvn help:effective-pom und Überprüfen, welche Versionen tatsächlich aufgelöst werden - wenn Sie ein altes Protokoll von CI haben oder wo immer Sie es vergleichen möchten.
  • Explizite Einstellung der maven-site-pluginVersion inpluginManagement Abschnitt
  • Hinzufügen einer Abhängigkeit zu maven-site-plugin(siehe unten)

org/apache/maven/doxia/siterenderer/DocumentContentfinden Sie in doxia-site-renderer:

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

Ich vermute, dass die explizite Einstellung der Version des Maven-Site-Plugins auf das, was Sie (übrigens) verwendet haben, funktioniert.


Bearbeiten: Verfolgte ein ähnliches Problem beim Testen von Maven-Plugin-Builds. Das explizite Festlegen der maven-site-pluginVersion (3.7.1 ATOW) in der von pom verwendeten Integration pom maven-invoker-pluginhat für mich funktioniert.


1

Ich habe diesen Fehler heute auch bei einigen meiner Build-Jobs festgestellt. Das oben vorgeschlagene Update, das Hinzufügen einer konkreten Abhängigkeit für das Maven-Site-Plugin, funktioniert und behebt dieses Problem.

Was es für mich jedoch hervorhob, war die Tatsache, dass ich sogar das Ziel der MVN-Site ausführte, von dem ich nicht einmal wusste, dass wir es ausführen und das wir nicht wirklich benötigen.

Mein Fix bestand daher darin, das Site-Ziel aus meinem MVN-Argument zu entfernen, da die von ihr erstellte Site zwar recht nützlich ist, ich jedoch nie wusste, dass wir sie erstellen, sie nirgendwo veröffentlicht und sie ohnehin bei jedem Build gelöscht haben.


1

Ich habe versucht, Changhuas Rat zu befolgen und das Maven-Projekt-Info-Reports-Plugin auf Version 3.0.0 und das Maven-Site-Plugin auf 3.7.1 in meiner POM-Datei zu definieren, aber festgestellt, dass die Maven-Site immer noch in Version 3.3 abgerufen wurde des maven-site-plugins, unabhängig davon, wie ich es eingestellt habe.

Endlich wurde mir klar, dass mein Problem mit unserer Projektstruktur zu tun hatte. Wir haben einen Eltern-Pom, in dem wir die Maven-Site-Plugin-Abhängigkeit definiert haben, die dann von den Kinder-Poms geerbt wurde. Die Build-POM-Datei war jedoch separat und definierte überhaupt kein Maven-Site-Plugin, wodurch Maven die Version 3.3 selbst abrufen konnte. Ich habe die Maven-Site-Plugin-Abhängigkeit (Version 3.7.1) zur Build-Pom-Datei hinzugefügt, sodass sie jetzt sowohl in der Build-Pom-Datei als auch in der übergeordneten Pom-Datei vorhanden ist. Jetzt verwendet der Build korrekt Version 3.7.1. und geht wieder vorbei.


1

Die folgenden Versionen in pom.xml haben das Problem für mich behoben:

            <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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.