Подтвердить что ты не робот

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 для всего проекта.

4b9b3361

Ответ 1

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

mvn package
mvn -N pre-site

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

Наконец, если вы работаете под Jenkins, mvn -N pre-site можно вызвать в том же задании с помощью Выполнить shell пост. Публикация javadocs в нашей версии Jenkins требуется с помощью действия post-build " Использовать издателей из другого проекта".

Ответ 2

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

Ответ 3

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

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

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

Это действительно не идеально. Он чувствует себя немного взломанным.