首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于排除XSD文件的cxf-codegen-plugin

用于排除XSD文件的cxf-codegen-plugin
EN

Stack Overflow用户
提问于 2014-12-03 08:14:36
回答 1查看 2.7K关注 0票数 3

我使用cxf-codegen-plugin在构建时使用Maven生成一系列WS客户端。这些WSDL使用如下所示的相对路径引用一些XSD模式定义:../someService/schema.xsd

现在,当我从Eclipse触发一个构造时,由于我的XSD文件被放置在正确的路径上,所以它正常工作。

但是当我从Jenkins启动一个构建作业时,它失败了,因为它似乎使用Jenkins工作区作为构造的根。

我甚至不知道您是否可以改变Jenkins的这种行为,但是由于我无法控制我的Jenkins实例,我想知道的是cxf-codegen-plugin完全排除XSD处理,然后使用不同的插件显式地使用不同的执行阶段生成这些类。

我读过你可以这样做:

代码语言:javascript
复制
<defaultOptions>
    <extraargs>
        <extraarg>-nexclude</extraarg>
        <extraarg>http://*.ws.cntxes.emprego.xunta.es</extraarg>
    </extraargs>
</defaultOptions>

但这假设我在构建之前就知道这些名称空间,而我不知道(WSDL文件是使用maven依赖项插件从外部依赖项获取的)。

我也试过:

代码语言:javascript
复制
<wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
<includes>
    <include>
    **/*.wsdl
    </include>
</includes>
<excludes>
    <exclude>
     *.xsd
    </exclude>
</excludes>

但是这是行不通的,插件只会继续解析XSD文件并生成相关的类。

还有其他方法可以阻止XSD文件的解析和WSDL定义的处理吗?

编辑:,这是Jenkins给我的错误:

代码语言:javascript
复制
[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

EN

回答 1

Stack Overflow用户

发布于 2016-07-13 14:07:26

我也有同样的问题(只有wsdl文件)。经过长时间的研究,我发现问题是一个区分大小写的问题- windows (本地CLI和eclipse构建)和linux/unix hudson/jenkins构建环境:

有问题的wsdl有一个大字母S

代码语言:javascript
复制
<wsdlOption>
 <wsdl>${basedir}/src/main/resources/Some.wsdl</wsdl>
</wsdlOption>

但是在文件系统上,文件是some.wsdl,所以它不是路径问题(./工作区/.)正如我最初所预期的..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27266651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档