gpt4 book ai didi

maven-jaxb2-plugin 失败,必须存在 JAXB 版本属性

转载 作者:行者123 更新时间:2023-12-03 19:28:45 26 4
gpt4 key购买 nike

我对 maven-jaxb2-plugin 有以下配置:

            <!-- https://mvnrepository.com/artifact/org.jvnet.jaxb2.maven2/maven-jaxb2-plugin -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.2</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<strict>false</strict>
<schemaLanguage>WSDL</schemaLanguage>
<generatePackage>com.mycompany.project.domain.wsdl</generatePackage>
<schemas>
<schema>
<url>url or file</url>
</schema>
</schemas>
</configuration>
</plugin>

它失败了:
[ERROR] Error while parsing schema(s).Location [ file:/home/hasancansaral/workspace/company/domain/src/main/xsd/delivery.wsdl{2,366}].

org.xml.sax.SAXParseException; systemId:文件:/home/hasancansaral/workspace/company/domain/src/main/xsd/delivery.wsdl;行号:2;列数:366;必须存在 JAXB 版本属性

如果我通过 IntelliJ IDEA 运行插件或做一个简单的 mvn clean jax2b:generate 并没有什么区别.但是,使用可以找到 here 的架构,该操作是成功的。 ,所以我怀疑我的 wsdl 模式实际上格式不正确,我暂时无法公开,但可以通过消息提供(我知道这对公开没有太大帮助,但如果问题出在我的模式中)将在此处发布相关的问题部分)。

注:
SOAP UI 也会验证模式。

注2:
两个 jax2b-maven-plugin 都存在相同的错误和 maven-jax2b-plugin .

最佳答案

TL;博士 您的 WSDL 不正确/不适合 XJC。您将需要 strup JAXB 自定义或添加 xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"到根元素。

问题是您的 WSDL 在包含的模式中包含大量 JAXB 定制。这是一个坏主意。 JAXB 定制是特定于供应商的东西,将它们放在 WSDL(应该是供应商中立的规范)中的人没有做正确的事情。

现在的问题是,当您进行内联 JAXB 自定义时,JAXB 模式编译器 XJC 需要某些花里胡哨的东西。赞 jaxb:version根元素上的属性。在这种情况下,这是缺失的。它存在于 schema元素但不在根 wsdl:definitions元素。如果您 add it ,编译成功。

这与 JAXB 插件无关。如果您尝试 xjc -wsdl delivery.wsdl ,你会得到同样的错误。

可能有一些神奇的选择来抑制这个问题,但很难弄清楚。所以我建议修补 WSDL。在预代码生成步骤中创建补丁并将其应用到 WSDL。我个人会从 WSDL 中去除所有 JAXB 定制,因为他们实际上什么都忘记了。

关于maven-jaxb2-plugin 失败,必须存在 JAXB 版本属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42807941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com