Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 692
Eero Aaltonen Avatar asked Apr 10 '15 14:04

Eero Aaltonen


2 Answers

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

like image 138
Eero Aaltonen Avatar answered Oct 05 '22 17:10

Eero Aaltonen


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.

like image 22
AWhitford Avatar answered Oct 05 '22 16:10

AWhitford