6 proyectos Maven demostrando generación automática de código desde varios formatos de esquemas y APIs.
-
json2Java
Generar POJOs Java desde esquemas JSON- Plugin:
jsonschema2pojo - Entrada: Esquemas JSON → Salida: Clases Java con anotaciones Jackson
- Caso de uso: Contratos de API, validación de datos, prototipado rápido
- Plugin:
-
java2Json
Generar esquemas JSON desde clases Java- Plugin: Generador de esquema JSON personalizado
- Entrada: Clases Java → Salida: Definiciones de esquema JSON
- Caso de uso: Documentación de API, desarrollo contract-first
-
xsd2Java
Generar clases Java desde XML Schema Definition- Plugin:
jaxb2-maven-plugin - Entrada: Archivos XSD → Salida: Clases Java anotadas con JAXB
- Caso de uso: Servicios SOAP, procesamiento XML, integración de sistemas legacy
- Tecnología: JAXB (Java Architecture for XML Binding)
- Plugin:
-
java2XSD
Generar esquemas XSD desde clases Java- Plugin: Generación de esquema JAXB
- Entrada: Clases Java → Salida: Definiciones XSD
- Caso de uso: Contratos de web services, validación XML, integración empresarial
-
wsdl2Java
Generar código cliente SOAP Java desde WSDL- Plugin:
cxf-codegen-plugin(Apache CXF) - Entrada: Archivo WSDL → Salida: Clases cliente SOAP Java
- Caso de uso: Consumo de servicios SOAP, integración de sistemas legacy
- Ejemplo: Cliente de web service NumberConversion
- Plugin:
-
swagger2Java
Generar código Java desde especificaciones Swagger/OpenAPI- Plugin:
swagger-codegen-maven-plugin - Entrada: Specs Swagger/OpenAPI → Salida: Código cliente REST Java
- Caso de uso: Desarrollo API-first, generación de cliente REST, generación de SDK
- Ejemplo: Generación de cliente API Petstore
- Plugin:
Esquema JSON ──json2Java──→ Clases Java (POJOs)
↕
java2Json
↓
Esquema JSON
Esquema XSD ───xsd2Java───→ Clases Java (JAXB)
↕
java2XSD
↓
Esquema XSD
Esquema WSDL ──wsdl2Java──→ Cliente SOAP Java
(Apache CXF)
OpenAPI/Swagger swagger2Java→ Cliente REST Java
(Swagger Codegen)
Herramienta de Construcción:
- Maven 3.x+
Plugins de Generación de Código:
jsonschema2pojo-maven-plugin- JSON a Javajaxb2-maven-plugin- XSD ↔ Java (JAXB)cxf-codegen-plugin- WSDL a Java (Apache CXF)swagger-codegen-maven-plugin- Swagger/OpenAPI a Java
Data Binding y Procesamiento:
- JAXB (Java Architecture for XML Binding)
- Jackson (Procesamiento JSON)
- Apache CXF (SOAP/Web Services)
Versión Java:
- Java 11+ (JAXB requiere dependencia explícita ya que fue eliminado del JDK 11+)
| Proyecto | Formato Origen | Salida | Caso de Uso | Plugin |
|---|---|---|---|---|
| json2Java | Esquema JSON | POJOs Java | APIs REST, modelos de datos | jsonschema2pojo |
| java2Json | Clases Java | Esquema JSON | Documentación de API | Personalizado |
| xsd2Java | XSD (Esquema XML) | Java (JAXB) | SOAP, procesamiento XML | jaxb2 |
| java2XSD | Clases Java | XSD | Web services, validación XML | jaxb2 |
| wsdl2Java | WSDL | Cliente SOAP Java | Servicios SOAP legacy | cxf-codegen |
| swagger2Java | Swagger/OpenAPI | Cliente REST Java | APIs REST modernas | swagger-codegen |
Java 11+
Maven 3.6+git clone https://github.com/Cortadai/json2Java.git
cd json2Java
mvn clean compileEl código generado típicamente aparece en:
target/generated-sources/
- Diseño de API contract-first
- Generación rápida de POJOs desde specs de API
- Generación de datos mock
- Aplicación de contratos de validación
- Generar esquemas JSON para documentación
- Crear specs OpenAPI/Swagger desde código
- Validación de contratos
- Alineación consumidor/productor
- Integración de sistemas legacy
- Implementación de servicios SOAP
- Validación XML
- Procesamiento de documentos EDI/B2B
- Definición de servicios SOAP
- Especificación de contratos XML
- Integración de sistemas legacy
- Estándares de intercambio de datos
- Integración de sistemas legacy
- Consumo de servicios SOAP
- Generación automática de stubs de cliente
- Llamadas SOAP type-safe
- Generación de SDK desde specs de API
- Clientes REST type-safe
- Desarrollo API-first
- Integración de microservicios
- Empezar con json2Java - Ejemplo bidireccional más simple
- Aprender java2Json - Dirección inversa
- Entender el ecosistema de plugins Maven
- Pasar a xsd2Java - Binding JAXB
- Revertir con java2XSD - Generación de esquemas
- Entender estándares XML empresariales
- wsdl2Java - SOAP/sistemas legacy
- swagger2Java - APIs REST modernas
- Combinar múltiples generadores en una sola construcción Maven
- Automatizar validación de esquemas
- Integración CI/CD de generación de código
<build>
<plugins>
<!-- Generación JSON -->
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
...
</plugin>
<!-- Generación JAXB/XSD -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
...
</plugin>
<!-- Generación CXF/WSDL -->
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
...
</plugin>
</plugins>
</build>mvn clean compile
# Todos los generadores se ejecutan en secuencia
# El código aparece en target/generated-sources/Todos los proyectos siguen una estructura Maven consistente:
proyecto-generacion-codigo/
├── pom.xml
│ └── Configuración de plugins
├── src/
│ ├── main/
│ │ ├── java/ (si hay código personalizado)
│ │ └── resources/ (esquemas/specs)
│ │ ├── schemas/
│ │ ├── wsdl/
│ │ └── openapi/
│ └── test/
└── target/
└── generated-sources/ (Código generado aquí)
└── org.example/
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<sourceDirectory>src/main/resources/schemas</sourceDirectory>
<outputDirectory>target/generated-sources</outputDirectory>
<targetPackage>org.example.model</targetPackage>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin><plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
</plugin><plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>target/generated-sources</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>src/main/resources/wsdl/service.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin><plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.34</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/resources/openapi.yaml</inputSpec>
<language>java</language>
<output>target/generated-sources</output>
</configuration>
</execution>
</executions>
</plugin>src/main/generated/ ← Código generado (solo lectura)
src/main/java/ ← Código escrito a mano
# Ejemplo GitHub Actions
- name: Generate Code
run: mvn clean compile- ✅ Commitear
pom.xmlcon configuración de plugin ⚠️ No commitear código generado (añadir a.gitignore)- ✅ Commitear archivos fuente de esquemas (XSD, WSDL, etc.)
- Documentar qué plugin genera qué
- Mantener archivos de esquema/spec actualizados
- Anotar directorio de salida esperado
- Seguro regenerar en cualquier momento
- Usar fases Maven:
generate-sources,generate-resources - Parte del ciclo de vida
clean compile
Después de explorar esta colección, comprenderás:
- ✅ Beneficios y trade-offs de generación de código
- ✅ Ecosistema de plugins Maven
- ✅ Enfoques de desarrollo schema-first
- ✅ Desarrollo guiado por contratos
- ✅ JAXB para binding XML/Java
- ✅ Generación de cliente SOAP (sistemas legacy)
- ✅ Generación de cliente REST (APIs modernas)
- ✅ Validación y generación de esquemas JSON
- ✅ Generación automática de código en CI/CD
- ✅ Patrones de integración empresarial
- JSON Schema - Validación de datos JSON
- XSD (XML Schema) - Validación de datos XML
- WSDL - Descripción de servicios SOAP
- OpenAPI/Swagger - Descripción de API REST
- JAXB - Binding XML↔Java (Jakarta EE)
- Jackson - Procesamiento JSON (estándar Java)
- Apache CXF - Framework SOAP/WS
- Proyectos de Aprendizaje Angular - Generación de código frontend
- Aprendizaje Spring Boot - Servicios backend
- Arquitectura de Microservicios - Contratos de servicios
| Métrica | Valor |
|---|---|
| Total Proyectos | 6 |
| Herramienta de Build | Maven |
| Versión Java | 11+ |
| Nivel de Aprendizaje | Intermedio |
| Enfoque | Automatización de Generación de Código |
Todos los proyectos etiquetados con:
#generacion-codigo- Generación automática de código#aprendizaje- Material de aprendizaje#educacion- Contenido educativo#tutorial- Estilo tutorial#automatizacion- Automatización de build#maven- Herramienta de build Maven
Proyecto hub code-generation-tools también etiquetado con:
#coleccion- Hub recopilatorio#herramientas- Herramientas de desarrollo
La generación de código cierra la brecha entre:
- Contratos (esquemas, specs) ← Fuente de verdad
- Implementación (código Java) ← Artefacto generado
Este enfoque asegura:
- ✅ Seguridad de tipos
- ✅ Cumplimiento de contratos
- ✅ Desarrollo rápido
- ✅ Menos codificación manual
- ✅ Consistencia entre equipos
Estos proyectos fueron creados como ejemplos de aprendizaje para entender varios enfoques de generación de código en el ecosistema Maven.
Explora cómo diferentes formatos de esquema (JSON, XSD, WSDL, OpenAPI) pueden generar automáticamente código Java listo para producción.
Última actualización: Noviembre 2025