Has*_*ral 5 jaxb maven-plugin maven maven-jaxb2-plugin jaxb2-maven-plugin
我有以下配置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>
Run Code Online (Sandbox Code Playgroud)
它失败了:
[ERROR] Error while parsing schema(s).Location [ file:/home/hasancansaral/workspace/company/domain/src/main/xsd/delivery.wsdl{2,366}].
Run Code Online (Sandbox Code Playgroud)
org.xml.sax.SAXParseException; systemId:file:/home/hasancansaral/workspace/company/domain/src/main/xsd/delivery.wsdl; lineNumber:2; columnNumber:366; 必须存在JAXB版本属性
如果我通过IntelliJ IDEA运行插件或做一个简单的操作,它没有什么区别mvn clean jax2b:generate
.但是,使用可在此处找到的架构的操作是成功的,因此我怀疑我的wsdl架构实际上是格式错误的,我暂时无法公开,但可以通过消息提供(我知道它没有多大帮助按原样公开,但如果问题出现在模式中,我将在此处发布相关的问题部分).
注意: SOAP UI也会验证架构.
注2:
同样的错误是存在既jax2b-maven-plugin
和maven-jax2b-plugin
.
TL; DR您的WSDL不正确/适合XJC.您需要结束JAXB自定义或添加xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"
到根元素.
问题是您的WSDL在包含的模式中包含许多JAXB自定义.这是一个坏主意.JAXB定制是特定于供应商的东西,无论谁将它们放入WSDL(应该是与供应商无关的规范),都没有做正确的事情.
现在的问题是XJC,当您进行内联JAXB自定义时,JAXB模式编译需要一定的花里胡哨.喜欢jaxb:version
根元素的属性.在这种情况下,缺少.它存在于schema
元素上但不存在于根wsdl:definitions
元素上.如果添加它,编译成功.
这与JAXB插件无关.如果你尝试xjc -wsdl delivery.wsdl
,你会得到同样的错误.
可能有一些神奇的选择可以解决这个问题,但很难搞清楚.所以我建议修改WSDL.创建补丁并在预代码生成步骤中将其应用于WSDL.我个人会从WSDL中删除所有JAXB自定义,因为他们忘记了什么.
归档时间: |
|
查看次数: |
2531 次 |
最近记录: |