Lombok Maven javadoc: сводный отчет со сгенерированными источниками

У меня есть многомодульный java-проект, созданный с помощью Maven, для которого я хочу создать javadocs с помощью javadoc:aggregate. Структура проекта выглядит так:

parent
├─lomboklib
└─other

Я также использую Project Lombok для создания некоторых методов в проекте. Я успешно настроил его для работы с отдельными модулями, сначала запустив delombok с плагин Lombok maven. Для отдельных модулей (lomboklib) это сгенерирует исходный код в

target/generated-sources/delombok

который затем обрабатывается maven-javadoc-plugin и инструментом javadoc. Первоначально это было решено в этом вопросе SO.

Как настроить отчет javadoc:aggregate, чтобы он также использовал сгенерированные источники?

Я создал песочницу проблемы со всеми определениями модулей в Github. В идеале я должен уметь бегать.

mvn clean compile javadoc:aggregate

В родительском проекте и все это скомпилировать и получить javadocs для всего проекта.


person Eero Aaltonen    schedule 10.04.2015    source источник
comment
Отличный вопрос. Та же проблема в проекте с десятками модулей, которые используют ломбок. Вы надеетесь, что есть какой-то способ переопределить подкаталог, который просматривает javadoc:aggregate, рекурсивно просматривая модели. Мы работаем с хакерским решением от @Ben M., которое работает.   -  person Sodved    schedule 27.05.2020


Ответы (3)


Я создал конфигурацию сборки обходного пути, которая будет создавать агрегированные javadocs из сгенерированных источников, хотя последовательность вызовов состоит из двух шагов:

mvn package
mvn -N pre-site

Конфигурация сборки теперь опубликована на Github. . Текущая версия поддерживает только дерево проекта глубины один, но, конечно, его можно изменить. Он работает, собирая зависимости в родительском каталоге target, а затем запуская включенный скрипт Ant.

Наконец, при работе под Jenkins mvn -N pre-site можно вызвать в том же задании через пост-этап Execute shell. Публикация javadocs в нашей версии Jenkins требовала использования действия после сборки «Использовать издателей из другого проекта».

person Eero Aaltonen    schedule 07.07.2016

Я загрузил пример проекта с Github, чтобы воссоздать вашу проблему, и обнаружил, что это произошло из-за того, что lombok-maven-plugin был без необходимости настроен в pom верхнего уровня - он нужен только для модуля, содержащего код ломбока. Просто удалив эту конфигурацию, javadoc:aggregate ведет себя так, как ожидалось.

person AWhitford    schedule 17.05.2015

У меня такая же проблема, и я смог обойти ее, сославшись на исходные пути непосредственно из родительского проекта.

Попробуйте эту конфигурацию для вашего родительского pom maven-javadoc-plugin.

<configuration>
    <sourcepath>
        lomboklib/target/generated-sources/delombok;
        other/target/generated-sources/delombok
    </sourcepath>
</configuration>

Это действительно не идеально. Это похоже на взлом.

person Ben M.    schedule 05.02.2016