IntelliJ ¿Cómo puedo obtener Build | Reconstruir para generar POJO a partir de archivos XSD y compilarlos

Resuelto PatS asked hace 10 meses • 0 respuestas

Esta pregunta es específica de IntelliJ . También publicaré esto en el sitio de la comunidad de soporte de IntelliJ en https://intellij-support.jetbrains.com/hc/en-us/community/topics . Estoy usando la última versión de IntelliJ, que es 2023.3.4 (compilación n.º IU-233.14475.28, compilada el 13 de febrero de 2024).

Actualmente estoy usando el complemento maven com.evolvedbinary.maven.jvnet:jaxb30-maven-plugin:0.15.0
para tomar archivos *.XSD y generar POJO a partir de los XSD y compilar los POJO en clases para usar en mi aplicación.

Un fragmento de la estructura de mi directorio (para los propósitos de esta pregunta es):

maven-module1/ 
    src/main/java/org/acme/myapp/Main.java
    src/main/resources/xsd/myData.xsd

Después de ejecutar mvn clean install, el complemento XJB genera fuentes y Maven las compila y las coloca en el directorio target/classes junto con otros archivos Java compilados. A continuación se muestra el resultado target/classesy target/generated-sourceslos directorios.

maven-module1/ 
    target/generated-sources/xjc/org/acme/myapp/myData.java 
    target/classes/org/acme/myapp/Main.class
    target/classes/org/acme/myapp/myData.class 

Entonces, mis fuentes generadas no se colocan en un src/main/javasubdirectorio normal, sino en un subdirectorio dentro del directorio de destino.

    <properties> 
          <maven-jaxb30-plugin-version>0.15.0</maven-jaxb30-plugin-version> 
    </properties> 
 
                <plugin> 
                    <groupId>com.evolvedbinary.maven.jvnet</groupId> 
                    <artifactId>jaxb30-maven-plugin</artifactId> 
                    <version>${maven-jaxb30-plugin-version}</version> 
                    <executions> 
                        <execution> 
                            <goals> 
                                <goal>generate</goal> 
                            </goals> 
                        </execution> 
                    </executions> 
                    <configuration> 
                        <strict>false</strict> 
                        <schemaIncludes>**/xsd/*.xsd</schemaIncludes> 
                        <bindingIncludes>**/xjb/*.xjb</bindingIncludes> 
                        <useDependenciesAsEpisodes>false</useDependenciesAsEpisoes> 
                    </configuration> 
                </plugin> 

¿Cómo puedo hacer que IntelliJ utilice este complemento de Maven para generar el código fuente y compilarlo?

lo que he probado

NOTA: Ya intenté usar el complemento IntelliJ descrito en https://www.jetbrains.com/help/idea/generate-java-from-xml-schema-using-jaxb-dialog.html

Y descubrí que tenía limitaciones (no me permitía ingresar al directorio de salida de destino/fuentes generadas)

Lo que estoy tratando de lograr es esto:

  1. Cuando cambio a una nueva rama de git y
  2. Ejecutar compilación | Reconstruya el módulo "mi-módulo-con-xsds-in-it", que
  3. IntelliJ genera los POJO y los compila.

Actualmente, mi solución es ejecutar maven clean install desde la línea de comando de ese directorio de módulo maven para generar y compilar los POJO XSD.

PatS avatar Feb 15 '24 23:02 PatS
Aceptado

Puede ir a Configuración > Construir > Herramientas de compilación > Maven > Runner y seleccionar Delegar .

La documentación para esta función se encuentra en: https://www.jetbrains.com/help/idea/delegate-build-and-run-actions-to-maven.html#delegate_to_maven

Ese enlace dice:

De forma predeterminada, IntelliJ IDEA utiliza el generador nativo de IntelliJ IDEA para crear un proyecto Maven. Puede resultar útil si tiene un proyecto Java puro o Kotlin, ya que IntelliJ IDEA admite la compilación incremental, lo que acelera significativamente el proceso de compilación. Sin embargo, si tiene una configuración que cambia la compilación sobre la marcha, o su compilación genera un artefacto con un diseño personalizado, entonces es preferible Maven para el proceso de compilación.

FLUXparticle avatar Feb 15 '2024 17:02 FLUXparticle