плагіни maven-site 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent


80

З цієї ночі плагіни maven сайту 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

Відповіді:


112

Я щойно почав отримувати цю проблему також під час збірок. Для мене працювало те, щоб конкретно визначити maven-site-pluginі maven-project-info-reports-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>

5
Дякую, я просто додаю плагін maven-project-info-reports-з версією 2.7 в pom, і зараз це нормально.
timmy otool

Працював і у мене! Дякую.
user577736

58

Це спричинено плагіном maven-project-info-reports-updated, оновленим до 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)

Ми можемо вказати конкретну версію плагіна 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 до останньої версії 3.7.1, наприклад:

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

у складі частина пом


Це насправді справжня причина. Мені цікаво, що (або краще хто) спровокував це оновлення? Звідки Maven бере цю інформацію?
ChristopherS

1
@mbreck так, нам потрібно додати конфігурацію до кожного пом.
Чанхуа

версію maven-site-plugin потрібно вказати в розділі плагінів проектів, щоб вона працювала. Розділ "нові" звіти мене дуже збентежив і здається зайвим. Для мене maven сьогодні майже непридатний для використання.
Вольфганг Фаль

Для мене це чудово працювало. Я визначив maven-checkstyle-plugin (3.0.0)іmaven-project-info-reports-plugin (2.9) в <reporting>розділіpom.xml
user2490003

1
Це спрацювало у мене лише після зниження maven-project-info-reports-plugin до v2.9, хоча я використовував maven-site-plugin v3.7.1
Elayamathy

11

Версію плагіна сайту 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>

2
Дякую! Отримав помилку, дотримуючись керівництва Maven's Getting Started та виконуючи "mvn site". Після додавання вашого фрагмента до мого pom.xml команда працює зараз.
AbstractVoid

1
@WallTearer це було саме так. Я не знаю, чи має вона іншу поведінку після підручників, що набирають текст у консолі чи в Eclipse (це не повинно здаватися). У будь-якому випадку, я думаю, посібник користувача слід оновити.
foxTox

Джеф - це той чоловік. Я припускаю, що саме <build>проти <reporting>розділення змусило мене це працювати.
javabeangrinder


1

Вам дійсно потрібно додати більше інформації (Я не голосував проти BTW).

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 на те, що ви використовували раніше (до речі), буде працювати.


Редагувати: Переслідував подібну проблему під час тестування збірки плагінів maven, явно встановивши maven-site-pluginверсію (3.7.1 ATOW) в інтеграційному pom, який використовував, maven-invoker-pluginдля мене спрацював.


1

Я також вдарився про цю помилку на деяких моїх робочих місцях сьогодні. Запропоноване вище виправлення, додавши конкретну залежність для плагіна maven-site, справді працює і виправляє цю проблему.

Однак для мене це підкреслило той факт, що я навіть запускав ціль mvn сайту, про яку я навіть не знав, що ми запускаємо, і насправді нам не потрібна.

Моє виправлення полягало в тому, щоб вилучити ціль сайту з мого mvn arg, оскільки, хоча сайт, який він створює, насправді є досить корисним, я ніколи не знав, що ми його створюємо, ми ніколи його ніде не публікували і в будь-якому випадку фактично видаляли.


1

Я спробував слідувати порадам Чанхуа і визначити плагін maven-project-info-reports-plugin до версії 3.0.0 та maven-site-plugin до 3.7.1 у своєму файлі pom, але виявив, що сайт maven все ще працював у версії 3.3 плагіна maven-site-незалежно від того, як я його встановив.

Нарешті я зрозумів, що моя проблема пов’язана з нашою структурою проекту. У нас є батьківський pom, в якому ми визначали залежність maven-site-plugin, яка потім успадковувалась дітьми poms. Однак файл побудови pom був окремим і взагалі не визначав плагін maven-site-plugin, що дозволило maven самостійно використовувати версію 3.3. Я додав залежність maven-site-plugin (версія 3.7.1) до файлу pom build, так що він тепер існує як у файлі pom build, так і в батьківському файлі pom, і тепер збірка правильно використовує версію 3.7.1, і знову проходить.


1

Наступні версії у 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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.