我使用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)
正在寻找詹金斯的根源&#39;工作区而不是/var/lib/jenkins/workspace/MYPROJECT/myproject-webservice/src/main/resources/wsdl/xsd/schema.xsd
答案 0 :(得分:0)
我遇到了同样的问题(仅限wsdl文件)。经过长时间的研究,我发现问题是一个区分大小写的问题 - windows(本地CLI和eclipse构建)和linux / unix hudson / jenkins构建环境:
有问题的wsdl有一个大字母 S
<wsdlOption>
<wsdl>${basedir}/src/main/resources/Some.wsdl</wsdl>
</wsdlOption>
但是在文件系统上,文件是some.wsdl
所以这不是路径问题(... / workspace / ...),正如我最初预期的那样......