Плагины для сайта maven 3.3 java.lang.ClassNotFoundException: org.apache.maven.doxia.siterenderer.DocumentContent
С этой ночи плагины сайта 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
7 ответов
Я только начал получать эту проблему также во время сборок. То, что работало для меня, было конкретно определить maven-site-plugin
и maven-project-info-reports-plugin
вместе с номерами версий в пом.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.7</version>
</plugin>
Это вызвано тем, что плагин maven-project-info-reports-plugin обновлен до 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-plugin для последней версии 3.7.1, например:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
в сборке часть пом
Версия плагина сайта 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>
Maven 3 больше не поддерживает Doxia.
использование
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.2</version>
</plugin>
Ссылка: https://maven.apache.org/plugins/maven-site-plugin/maven-3.html
Вы действительно должны добавить больше информации (я не понизил 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-plugin на то, что вы использовали (кстати), будет работать.
Изменить: преследовал аналогичную проблему в тестировании сборки плагинов Maven, явно установив maven-site-plugin
версия (3.7.1 ATOW) в интеграционном модуле, используемая maven-invoker-plugin
работал на меня.
Следующие версии в 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>
Я попытался последовать совету Чанхуа и определить maven-project-info-reports-plugin для версии 3.0.0 и maven-site-plugin для 3.7.1 в моем файле pom, но обнаружил, что сайт maven все еще загружается в версии 3.3 maven-site-plugin, независимо от того, как я его установил.
Наконец я понял, что моя проблема связана со структурой нашего проекта. У нас есть родительский pom, в котором мы определяли зависимость maven-site-plugin, которая затем наследовалась дочерними poms. Однако файл сборки pom был отдельным и вообще не определял maven-site-plugin, что позволяло maven самостоятельно загружать версию 3.3. Я добавил зависимость maven-site-plugin (версия 3.7.1) в файл pom сборки, чтобы он теперь существовал как в файле pom сборки, так и в родительском файле pom, и теперь сборка выполняется корректно с использованием версии 3.7.1, и снова проходит.
Я также столкнулся с этой ошибкой на некоторых из моих работ по сборке сегодня. Исправление, предложенное выше, добавление конкретной зависимости для maven-site-plugin работает и исправляет эту проблему.
Тем не менее, то, что он подчеркнул для меня, было то, что я даже управлял целью сайта mvn, о которой я даже не знал, что мы работали, и мы действительно не требуем.
Поэтому я решил удалить цель сайта из моего mvn arg, так как, хотя созданный сайт на самом деле весьма полезен, я никогда не знал, что мы его создаем, мы нигде не публиковали его и фактически все равно удаляли при каждой сборке.