2015-04-10 19 views
31

Ho un progetto java multimodule realizzato con Maven al quale voglio generare javadocs con javadoc:aggregate. La struttura del progetto si presenta come:Lombok Maven javadoc: rapporto aggregato con sorgenti generate

parent 
├─lomboklib 
└─other 

Sono anche utilizzando Project Lombok per generare alcuni metodi nel progetto. L'ho configurato con successo per funzionare con singoli moduli eseguendo prima delombok con Lombok maven plugin. Per i singoli moduli (lomboklib), questo genererà codice sorgente in

target/generated-sources/delombok 

che viene poi elaborato dal maven-javadoc-plug e utensili javadoc. Questo è stato originariamente risolto in This SO question.

Come è possibile configurare il report javadoc:aggregate per utilizzare anche le origini generate?

Ho creato una sandbox del problema con tutte le definizioni del modulo in Github. Idealmente, dovrei essere in grado di eseguire

mvn clean compile javadoc:aggregate 

Nel progetto principale, e hanno tutta la cosa compilare e ottenere javadocs per l'intero progetto.

risposta

2

ho creato una configurazione di generazione soluzione che creerà javadocs aggregati provenienti da fonti generate, anche se la sequenza di chiamata ha due fasi:

mvn package 
mvn -N pre-site 

La configurazione di generazione è ora pubblicato in Github. La versione attuale supporta solo un albero del progetto di profondità uno, ma può naturalmente essere modificato. Funziona raccogliendo le dipendenze sotto la directory dei genitori target e quindi eseguendo lo script Ant Ant.

Infine, se si utilizza Jenkins, è possibile richiamare lo mvn -N pre-site nello stesso processo tramite fase Execute shell. La pubblicazione di javadocs nella nostra versione di Jenkins richiede l'utilizzo dell'azione post-build "Utilizza i publisher da un altro progetto".

1

Ho scaricato il progetto di esempio da Github per ricreare il problema e ho scoperto che era perché il lombok-maven-plugin è stato configurato inutilmente al pom di livello superiore - è necessario solo per il modulo che contiene codice lombok. Rimuovendo semplicemente tale configurazione, javadoc:aggregate si comporta come previsto.

0

Sto riscontrando lo stesso problema e sono riuscito a risolvere il problema facendo riferimento ai percorsi sorgente direttamente dal progetto principale.

Prova questa configurazione per il plug-in maven-javadoc del genitore pom.

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

Non è davvero l'ideale. Sembra un po 'un trucco.

Problemi correlati