使用 jaxb2-maven-plugin 3.1.0 编组旧 xsd 文件时出错

问题描述 投票:0回答:1

我有一个 xsd 文件,用于生成 DTO 文件,其中

jaxb2-maven-plugin
2.5.0
位于
Java 8
下。

现在我迁移到

jaxb2-maven-plugin
3.1.0
(由于之前迁移到
Java 11
而被迫),我收到此错误:

org.xml.sax.SAXParseException: not an external binding file. The root element must be {https://jakarta.ee/xml/ns/jaxb}bindings but it is {http://www.w3.org/2001/XMLSchema}schema

xsd 文件的开头如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="https://www.xxxxx.es/xxxxx/ApiEstandar"
    targetNamespace="https://www.xxxxx.es/xxxxx/ApiEstandar"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    
    <xs:complexType name="GenericRequest"/>
    
    <xs:complexType name="GenericResponse">
        <xs:sequence>
            <xs:element name="codigoRespuesta" type="xs:string" />
            <xs:element name="descripcionRespuesta" type="xs:string" />

如果我将

xmlns:xs
值更改为:

(就像询问之前的错误消息一样)
<xs:schema xmlns:xs="https://jakarta.ee/xml/ns/jaxb"

然后 Eclipse 抱怨

"xs:string"
名称未解析。

我不确定如何正确配置 xsd 文件。

编辑: 回答 Laurent Schoelens 我没有使用绑定文件,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>
                <locale>en</locale>
                <packageName>com.xxxxx.services.xxxxxservice.soap.services.model</packageName>
                <sources>
                    <source>${project.basedir}/src/main/resources/xsd/APIEstandar_v1.0.xsd</source>
                </sources>
            </configuration>
        </plugin>
java maven-jaxb2-plugin
1个回答
0
投票

从 v3 开始,maven-plugin

org.codehaus.mojo:jaxb2-maven-plugin
面向
JAXB3
,这是基于
jakarta
的。

如果您需要 JDK11 支持,而

jaxb2-maven-plugin
的 v2.x 不支持 JDK11 :您可以查看
org.jvnet.jaxb:jaxb-maven-plugin:2.0.9
插件,该插件与 Codehaus 插件非常相似,支持 JDK11、JDK17 甚至 JDK21。

© www.soinside.com 2019 - 2024. All rights reserved.