maven-cxf-codegen-plugin使用Jaxb绑定为所有生成的类添加继承 [英] maven-cxf-codegen-plugin using Jaxb binding to add inheritance for all generated classes

查看:146
本文介绍了maven-cxf-codegen-plugin使用Jaxb绑定为所有生成的类添加继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Apache CXF的cxf-codegen-plugin将wsdl转换为java对象。我指定了一个绑定文件来添加额外的jaxb处理。我希望所有这些文件都从接口继承(或扩展抽象类)。

I am using Apache CXF's cxf-codegen-plugin to turn a wsdl into java objects. I specified a binding file to add additional jaxb processing. I want all of these files to inherit from an interface (or extend an abstract class).

我的问题是,虽然我可以使用一个生成的文件来使用它

My problem is that while I can get this to work with one generated file using

<jaxb:bindings node="xsd:complexType[@name='sampleObj'] ">
        <inheritance:implements>example.Dao</inheritance:implements>
    </jaxb:bindings>

这将使sampleObj实现example.Dao。
我不知道如何处理所有复杂类型(生成的类)。不重复每个类的上述绑定(> 100)

which will make sampleObj implement example.Dao. I do not know how to get this to process for all of my complex types (generated classes). Without repeating the above binding for every class (>100)

我试过,

 <jaxb:bindings  multiple="true" node="//xsd:compexType[@name='*'] ">

但不起作用。

这是我的maven插件,如果它有帮助:

Here is my maven plugin, if it helps:

 <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-resources</id>
                    <phase>process-resources</phase>
                    <configuration>
                        <sourceRoot>${project.build.directory}/generated/</sourceRoot>
                                               <wsdlOptions>
                            <wsdlOption>

                                <wsdl>${wsdl_location}</wsdl>
                                <wsdlLocation>classpath:wsdl.wsdl</wsdlLocation>

                                <!--<wsdlLocation>classpath:wsdl.wsdl</wsdlLocation>-->
                                <extraargs>
                                    <extraarg>-autoNameResolution</extraarg>
                                    <extraarg>-xjc-Xfluent-api</extraarg>
                                    <extraarg>-xjc-Xbg</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraargs>-validate</extraargs>
                                    <extraargs>-mark-generated</extraargs>
                                          <extraargs>-xjc-Xinheritance</extraargs>
                                    <extraarg>-p</extraarg>
                                    <extraarg>com.example</extraarg>
                                </extraargs>

                                <bindingFiles>
                                      <bindingFile>${project.build.directory}\classes\jax-ws_binding.xjb</bindingFile>

                                </bindingFiles>
                            </wsdlOption>
                        </wsdlOptions>

                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-fluent-api</artifactId>
                    <version>3.0</version>
                </dependency>
                <dependency>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics</artifactId>
                    <version>0.6.5</version>
                </dependency>
                <dependency>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics-annotate</artifactId>
                    <version>0.6.5</version>
                </dependency>
                 <dependency>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-basics-runtime</artifactId>
                    <version>0.6.5</version>
                </dependency>

                <dependency>
                    <groupId>org.apache.cxf.xjcplugins</groupId>
                    <artifactId>cxf-xjc-boolean</artifactId>
                    <version>2.7.0</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-api</artifactId>
                    <version>${cxf.version}</version>
                </dependency>
            </dependencies>
        </plugin>

    </plugins>


推荐答案

啊,最后发现:添加 multiple =true绑定标记:

Ahh, found it at last: add multiple="true" to the bindings tag:

<jaxb:bindings schemaLocation="../../../../contracts/src/main/resources/wsdl/ifx24.xsd">
    <jaxb:bindings node="xsd:complexType[contains(@name, 'Rq_Type')]" multiple="true">
        <inheritance:implements>hu.eir.ifx.IfxExchange</inheritance:implements>
    </jaxb:bindings>
</jaxb:bindings>

这篇关于maven-cxf-codegen-plugin使用Jaxb绑定为所有生成的类添加继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆