我使用cxf-codegen-plugin在构建时使用Maven生成一系列WS客户端。这些WSDL使用相对路径引用一些XSD模式定义,如下所示:../someService/schema.xsd
cxf-codegen-plugin排除XSD文件
现在,当我从Eclipse中触发构造时,这会正常工作,因为我的XSD文件放置在正确的路径中。
但是当我从詹金斯启动施工作业时,它失败了,因为它似乎使用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表现不同?它是否从Maven的命令行起作用? – lexicore 2014-12-03 09:21:35
林不知道,但我的理解它使用mvn命令行控制台来建立项目 – MichelReap 2014-12-03 09:33:07
我已更新我的问题,以反映詹金斯的错误消息 – MichelReap 2014-12-03 09:36:58