#maven #jenkins #maven-site-plugin #maven-checkstyle-plugin
#maven #Дженкинс #maven-site-plugin #maven-checkstyle-plugin
Вопрос:
Я запускаю приложение maven «DemoApp», которое генерирует отчеты об анализе статического кода в стиле проверки. Он работает правильно, когда я запускаю его в eclipse, но когда я создаю его на jenkins, он выдает следующую ошибку
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site plugin:3.3:site (default-site) on project DemoApp: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.3:site failed: A required class was missing while executing org.apache.maven.plugins:maven-site-plugin:3
и следующее исключение :
java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent
Caused by: java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent
Я добавил следующие плагины в pom.xml
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<configuration>
<configLocation>src/main/resources/google_checks.xml</configLocation>
<encoding>UTF-8</encoding>
<consoleOutput>true</consoleOutput>
<failsOnError>false</failsOnError>
<linkXRef>false</linkXRef>
</configuration>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<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>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<reportSets>
<reportSet>
<reports>
<report>checkstyle</report>
</reports>
</reportSet>
</reportSets>
</plugin>
</plugins>
</reporting>
Ответ №1:
Я не могу сказать, решает ли это вашу текущую проблему, но в целом: объявления внутри <pluginManagement>
фактически ничего не устанавливают в процессе сборки, а предназначены как централизованное место для объявлений, общих для (подпроектов):
[…] это настраивает только плагины, на которые фактически ссылаются в элементе plugins в дочерних элементах или в текущем POM.
Смотрите разные версии в сообщении об ошибке: maven-site-plugin:3.3
и в объявлении: <version>3.7.1
.
Чтобы добавить такое объявление плагина в процесс сборки, вы должны дополнительно объявить / ссылаться на него в:
<build>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
</plugin>
</plugins>
...
</build>
То же самое относится и к maven-checkstyle-plugin
:
Если вы хотите сообщить об ошибке консоли или завершить сборку, вы должны добавить выполнение
checkstyle::check
к<build>
элементу и настроить все необходимые параметры.
Комментарии:
1. он по-прежнему работает в eclipse, но не работает в jenkins