Как сгенерировать классы из xsd схемы (Java, spring boot, soap)?

ссылка на репозиторий https://github.com/sergey3014/back.git

Не удается сгенерировать классы из xsd схемы. Не могу понять в чем проблема. Проект билдится но указанная папка с классами gen не создается.

Необходимые зависимости для этого добавил:

  • wsdl4j
  • jaxb2-maven-plugin
  • jaxb-xjc
  • postgresql
  • spring-boot-starter-web-services

pom.xml

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>xjc</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <sources>
                        <source>src/main/resources/xsd/products.xsd</source>
                    </sources>
                    <packageName>com.example.myProjectSoap.gen</packageName>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-xjc</artifactId>
                        <version>4.0.2</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.activation</groupId>
                        <artifactId>jakarta.activation</artifactId>
                        <version>1.2.2</version>
                    </dependency>
                </dependencies>
            </plugin>

resources/xsd/products.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.example.com/myProjectSoap/gen"
           targetNamespace="http://www.example.com/myProjectSoap/gen" elementFormDefault="qualified">

    <!-- Find All -->
    <xs:element name="getProductsRequest">
        <xs:complexType>
            <xs:sequence>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="getProductsResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="products" type="tns:product" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Find by name -->
    <xs:element name="getProductRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="getProductResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="product" type="tns:product"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- Save -->
    <xs:element name="postProductRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="product" type="tns:product"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="postProductResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="product" type="tns:product"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="product">
        <xs:sequence>
            <xs:element name="id" type="xs:int"/>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="price" type="xs:double"/>
            <xs:element name="description" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

config

package com.example.myProjectSoap.config;

import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.ws.config.annotation.EnableWs;
import org.springframework.ws.transport.http.MessageDispatcherServlet;
import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition;
import org.springframework.xml.xsd.SimpleXsdSchema;
import org.springframework.xml.xsd.XsdSchema;


@EnableWs
@Configuration
public class WebServiceConfig {

    @Bean
    public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean(servlet, "/ws/*");
    }


    @Bean(name = "products")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema productsSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("productPort");
        wsdl11Definition.setLocationUri("/ws");
        wsdl11Definition.setTargetNamespace("http://www.example.com/myProjectSoap/gen");
        wsdl11Definition.setSchema(productsSchema);
        return wsdl11Definition;
    }

    @Bean
    public XsdSchema productsSchema() {
        return new SimpleXsdSchema(new ClassPathResource("xsd/products.xsd"));
    }
}

entity

package com.example.myProjectSoap.entity;

import jakarta.persistence.*;
import lombok.Data;

@Entity
@Table(name = "demo_soap_project")
@Data
public class ProductModel {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;
    private String description;
}

application.properties

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:postgresql://localhost:5432/java
spring.datasource.username=postgres
spring.datasource.password=3014
spring.jpa.database=postgresql

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения


Ответы (0 шт):