tutorial mvn java maven

mvn - complementos de maven-site 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent



maven windows (8)

Desde esta noche, los plugins del sitio 3.3 de Maven dejan de funcionar.

Intenta borrar el repositorio local, pero no cambia. Maven 3.3.9 java 1.8

Sin configuración o dependencias definidas en pom para complementos de sitio

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


Acababa de empezar a tener este problema también durante las compilaciones. Lo que me funcionó fue definir específicamente el maven-site-plugin maven-project-info-reports-plugin y el maven-site-plugin maven-project-info-reports-plugin junto con los números de versión en el 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>


Esto se debe a maven-project-info-reports-plugin actualizado a 3.0.0, y se basa en doxia-site-renderer 1.8 (y tiene org.apache.maven.doxia.siterenderer.DocumentContent esta clase), pero maven-site -plugin: 3.3 confía en doxia-site-renderer: 1.4 (y no tiene org.apache.maven.doxia.siterenderer.DocumentContent)

Podemos especificar la versión de complemento de proyecto-información-informes-complementos en la parte de informe:

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

O podemos especificar maven-site-plugin al último 3.7.1 como:

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

en construir parte de pom


Intenté seguir el consejo de Changhua y definir el plugin de maven-project-reports-reports a la versión 3.0.0, y el plug-in de maven-site a 3.7.1 en mi archivo pom, pero encontré que el sitio de maven aún tenía la versión 3.3 del sitio-complemento-maven, independientemente de cómo lo establezca.

Finalmente me di cuenta de que mi problema tenía que ver con la estructura de nuestro proyecto. Tenemos un pom principal, en el que definimos la dependencia de plugin de maven site, que luego heredaron los poms de los hijos. Sin embargo, el archivo pom de compilación estaba separado y no definía en absoluto el plugin de maven-site, lo que permitía a maven tirar de la versión 3.3 por su cuenta. Agregué la dependencia de maven-site-plugin (versión 3.7.1) al archivo de compilación pom, para que ahora exista tanto en el archivo de compilación pom como en el archivo de pom principal, y ahora la compilación está usando correctamente la versión 3.7.1, y está pasando de nuevo.


La versión del complemento de sitio de Maven también se debe establecer explícitamente en la sección de compilación. Aquí está el ejemplo:

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


Las siguientes versiones en pom.xml solucionaron el problema para mí:

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



Realmente necesitas agregar más información (no bajé la votación por cierto).

IIRC; Si no especifica una versión para un complemento vinculado a las fases del ciclo de vida, obtendrá la última versión.

Tratar:

  • Actualización a la última versión de maven - 3.5.4 ATOW
  • Ejecutar mvn help:effective-pom y comprobar qué versiones se están resolviendo realmente - si tiene un registro antiguo de CI o donde quiera comparar con ...
  • Explicidad configurando la versión de maven-site-plugin en la sección de pluginManagement maven-site-plugin
  • Agregar una dependencia a maven-site-plugin (ver más abajo)

org/apache/maven/doxia/siterenderer/DocumentContent se puede encontrar en doxia-site-renderer :

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

Sospecho que la configuración explícita de la versión de maven-site-plugin para lo que solía usar (por cierto) funcionará.

Edición: perseguía un problema similar en las pruebas de compilación de maven plugin, configurando explícitamente la versión de maven-site-plugin (3.7.1 ATOW) en el pom de integración utilizado por maven-invoker-plugin .


También golpeé este error en algunos de mis trabajos de compilación hoy. La solución sugerida anteriormente, agregar una dependencia concreta para el complemento de maven-site funciona y soluciona este problema.

Sin embargo, lo que destacó para mí fue el hecho de que incluso estaba ejecutando el objetivo de mvn site, que ni siquiera sabía que estábamos ejecutando y que realmente no necesitamos.

Por lo tanto, mi solución fue eliminar el objetivo del sitio de mi mvn arg, ya que aunque el sitio que crea es en realidad bastante útil, nunca supe que lo estábamos creando, nunca lo publicamos en ningún lugar y en realidad lo eliminamos en cada compilación.