El tutorial o código que verás en este post es la solución más eficiente y válida que encontramos a tu duda o problema.
Solución:
Puede ejecutar maven-compile-plugin en la fase de generación de fuentes. Simplemente agregue otra ejecución antes de la ejecución existente y configúrela para que solo recoja las fuentes para el generador.
O divida el proyecto en dos: construya el generador con un POM separado e incluya la biblioteca del generador como una dependencia del POM que genera las fuentes.
Personalmente dividiría el proyecto. Mantiene los archivos de compilación más limpios y fáciles de mantener.
No quería tener 2 proyectos diferentes, así que traté de configurar Maven para agregar el código compilado generado al paquete jar final.
Esta es la solución de trabajo que he usado:
- En
process-classes
fase (ejecutada justo después de lacompile
fase):exec-maven-plugin
para ejecutar una clase principal capaz de generar mis archivos fuente entarget/generated-sources/java
carpeta (en mi caso específico usé la biblioteca Roaster para la generación del código fuente);build-helper-maven-plugin
para agregar las fuentes generadas en la ubicación correcta
- En
prepare-package
fase:maven-compiler-plugin
para detectar los cambios y recompilar el módulomaven-jar-plugin
para producir el paquete de tarro
Este es mi pom.xml:
org.codehaus.mojo
exec-maven-plugin
1.6.0
process-classes
java
com.example.MyClassWriter
$project.basedir
$project.build.directory
org.codehaus.mojo
build-helper-maven-plugin
3.0.0
process-classes
add-source
org.apache.maven.plugins
maven-compiler-plugin
3.6.1
prepare-package
compile
org.apache.maven.plugins
maven-jar-plugin
3.0.2
prepare-package
Para hacer esto en un proyecto, hay 3 pasos:
-
Compilar código generador
podemos hacerlo en
generate-sources
fase, utilizandomaven-compiler-plugin
. También puede excluir otros archivos de origen. -
Ejecutar generador para generar código
podemos hacerlo en
process-sources
fase, utilizandoexec-maven-plugin
. -
Compilar proyecto
abajo esta el key parte de pom.xml
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
1.8
compile-generator
generate-sources
compile
source/file/of/generator/*.java
other/source/files/*.java
org.codehaus.mojo
exec-maven-plugin
1.6.0
generate-codes
java
process-sources
your.main.class.of.generator
Te mostramos reseñas y valoraciones
Te invitamos a añadir valor a nuestra información contribuyendo tu veteranía en las referencias.