我使用cxf-codegen-plugin在构建时使用Maven生成一系列WS客户端。这些WSDL使用如下所示的相对路径引用一些XSD模式定义:../someService/schema.xsd
现在,当我从Eclipse触发一个构造时,由于我的XSD文件被放置在正确的路径上,所以它正常工作。
但是当我从Jenkins启动一个构建作业时,它失败了,因为它似乎使用Jenkins工作区作为构造的根。
我甚至不知道您是否可以改变Jenkins的这种行为,但是由于我无法控制我的Jenkins实例,我想知道的是cxf-codegen-plugin完全排除XSD处理,然后使用不同的插件显式地使用不同的执行阶段生成这些类。
我读过你可以这样做:
<defaultOptions>
<extraargs>
<extraarg>-nexclude</extraarg>
<extraarg>http://*.ws.cntxes.emprego.xunta.es</extraarg>
</extraargs>
</defaultOptions>但这假设我在构建之前就知道这些名称空间,而我不知道(WSDL文件是使用maven依赖项插件从外部依赖项获取的)。
我也试过:
<wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
<includes>
<include>
**/*.wsdl
</include>
</includes>
<excludes>
<exclude>
*.xsd
</exclude>
</excludes>但是这是行不通的,插件只会继续解析XSD文件并生成相关的类。
还有其他方法可以阻止XSD文件的解析和WSDL定义的处理吗?
编辑:,这是Jenkins给我的错误:
[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.7.3:wsdl2java (generate-sources-wsclient-cxf) on project my-project: Execution generate-sources-wsclient-cxf of goal org.apache.cxf:cxf-codegen-plugin:2.7.3:wsdl2java failed: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsdl definition from : file:/var/lib/jenkins/workspace/MYPROJECT/myproject-webservice/src/main/resources/wsdl/Descriptor/serviceDescriptor.wsdl
[ERROR] Caused by : WSDLException (at /definitions/types/xsd:schema): faultCode=PARSER_ERROR: Problem parsing '../xsd/schema.xsd'.: java.io.FileNotFoundException: /var/lib/jenkins/workspace/xsd/actividadFormativa.xsd (No such file or directory)它是在查看jenkins工作区的根,而不是/var/lib/jenkins/workspace/MYPROJECT/myproject-webservice/src/main/resources/wsdl/xsd/schema.xsd
发布于 2016-07-13 14:07:26
我也有同样的问题(只有wsdl文件)。经过长时间的研究,我发现问题是一个区分大小写的问题- windows (本地CLI和eclipse构建)和linux/unix hudson/jenkins构建环境:
有问题的wsdl有一个大字母S
<wsdlOption>
<wsdl>${basedir}/src/main/resources/Some.wsdl</wsdl>
</wsdlOption>但是在文件系统上,文件是some.wsdl,所以它不是路径问题(./工作区/.)正如我最初所预期的..。
https://stackoverflow.com/questions/27266651
复制相似问题