Сбой плагина сайта Maven при запуске на jenkins

#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