Search code examples
javamavencode-generationlombokmaven-javadoc-plugin

Lombok Maven javadoc:aggregate report with generated sources


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.


Solution

  • 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".