【问题标题】:Java Code generation from XSD/WSDL for Jakarta 4.0.0 using Maven Plugin使用 Maven 插件从 XSD/WSDL 为 Jakarta 4.0.0 生成 Java 代码
【发布时间】:2022-11-30 19:42:26
【问题描述】:

我已经浪费了很多天的时间试图弄明白,看起来很简单的事情(从 WSDL/XSD 生成代码)怎么会如此复杂。有什么方法吗?我觉得我已经尝试了所有这些,在不同的版本中使用不同的 jaxb 绑定和不同版本的实现

我尝试使用以下插件:

<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>

没有插件能够输出 jakarta 注释并且总是失败,因为一些 javax.xml 注释或 com.sun.* 类丢失。在这一点上,我正在考虑自己编写一个插件,因为这很荒谬,我只需要一个带有一些注释的简单 POJO,并且不想在 xsd 或 wsdl 更改时自己编写它们。

你们有没有使用过适用于 Jakarta 4 的方法?

【问题讨论】:

    标签: maven-jaxb2-plugin jaxb2-maven-plugin jaxws-maven-plugin


    【解决方案1】:

    试试这个:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            *
        </parent>
    
        <artifactId>*</artifactId>
    
        <properties>
            <service.package>com.company</service.package>
    
            <jakarta.xml.ws-api.version>4.0.0</jakarta.xml.ws-api.version>
            <jaxws-rt.version>4.0.0</jaxws-rt.version>
            <jaxws-ri.version>4.0.0</jaxws-ri.version>
            <jaxws-maven-plugin.version>3.0.0</jaxws-maven-plugin.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>jakarta.xml.ws</groupId>
                <artifactId>jakarta.xml.ws-api</artifactId>
                <version>${jakarta.xml.ws-api.version}</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-rt</artifactId>
                <version>${jaxws-rt.version}</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-ri</artifactId>
                <version>${jaxws-ri.version}</version>
                <type>pom</type>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>com.sun.xml.ws</groupId>
                    <artifactId>jaxws-maven-plugin</artifactId>
                    <version>${jaxws-maven-plugin.version}</version>
                    <configuration>
                        <wsdlDirectory>${basedir}/src/main/resources</wsdlDirectory>
                        <sourceDestDir>${basedir}/src/main/java</sourceDestDir>
                        <extension>true</extension>
                    </configuration>
                    <executions>
                        <execution>
                            <id>USER_INFO</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>wsimport</goal>
                            </goals>
                            <configuration>
                                <wsdlFiles>
                                    <wsdlFile>user_info.xml.wsdl</wsdlFile>
                                </wsdlFiles>
                                <packageName>${service.package}.userinfo</packageName>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    现在所有依赖项都是 jakarta.xml 而不是 javax.xml。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-15
      • 2016-04-05
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      相关资源
      最近更新 更多