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 для всего проекта.
Ответы
Ответ 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>
Это действительно не идеально. Он чувствует себя немного взломанным.