I have a multimodule java project built with Maven to which I want to generate javadocs with javadoc:aggregate
. The project structure looks like:
parent ├─lomboklib └─other
I am also using Project Lombok to generate some methods in the project. I have successfully configured it to work with single modules by first running delombok with the Lombok maven plugin. For single modules (lomboklib), this will generate source code in
target/generated-sources/delombok
which is then processed by maven-javadoc-plugin and the javadoc tool. This was originally solved in This SO question.
How can I configure the javadoc:aggregate
report to also use the generated sources?
I've put up a sandbox of the problem with all the module definitions in Github. Ideally, I should be able to run
mvn clean compile javadoc:aggregate
In the parent project, and have the whole thing compile and get javadocs for the entire project.
I created a workaround build configuration that will create aggregated javadocs from generated sources, although the call sequence has two steps:
mvn package mvn -N pre-site
The build configuration is now published in Github. The current version only supports a project tree of depth one, but can of course be modified. It works by gathering the dependencies under the parents target
directory and then running the included Ant script.
Finally, if running under Jenkins, the mvn -N pre-site
can be invoked in the same job through Execute shell post step. Publishing the javadocs in our version of Jenkins required using the post-build action "Use publishers from another project".
I downloaded the example project from Github to recreate your problem and discovered that it was because the lombok-maven-plugin
was configured unnecessarily at the top-level pom -- it is only needed for the module that contains lombok code. By simply removing that configuration, javadoc:aggregate
behaves as expected.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With