在wsimport中使用maven坐标样式剧集

时间:2013-06-20 07:09:40

标签: java jaxb catalog maven-jaxb2-plugin

我正在使用来自各种标准webservice的基本XSD类型构建(多个)复杂(GML, SWE, XLINK, etc)。现在,我想将编译分解为更多步骤,最好是我正在使用的每个标准。

优点:

1)我可以添加创建工具库,我可以在每个标准的所有web服务中重复使用。

2)我可以利用JAXB2 basics plugin的强大功能,它似乎与maven-jaxb2-plugin (org.jvnet.jaxb2.maven2)非常吻合,并创建了例如接口绑定。这与jaxws-maven-plugin插件形成鲜明对比。

最后一步是使用org.jvnet.jax-ws-commons:maven-jaxb2-plugin来创建我可以在EJB中实现的实际Web服务(或作为客户端调用)。

现在,org.jvnet.jaxb2.maven2:maven-jaxb2-plugin插件允许我通过他们的maven坐标来引用剧集,如下所示:

<episodes>
    <episode>
        <groupId>org.example</groupId>
        <artifactId>jaxb2-basics-test-episodes-a</artifactId>
    </episode>
</episodes>

我如何通过org.jvnet.jax-ws-commons:maven-jaxb2-plugin来做到这一点?我经常搜索,并尝试过这样的事情:

<plugin>
    <groupId>org.jvnet.jax-ws-commons</groupId>
    <artifactId>>maven-jaxb2-plugin</artifactId>
    <version>2.1</version>
    <executions>
        <execution>
            <goals>
                <goal>wsimport</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <wsdlDirectory>src/main/resources/</wsdlDirectory>
        <wsdlFiles>
            <wsdlFile>example.wsdl</wsdlFile>
        </wsdlFiles>                    
        <xjcArgs>
            <xjcArg>-b</xjcArg>
            <xjcArg>../cpt-xsd/target/generated-sources/xjc/META-INF/sun-jaxb.episode</xjcArg>
        </xjcArgs>                  
        <verbose>true</verbose>
    </configuration>
</plugin>

从(已编译的)JAXB dependend项目的目标目录获取剧集文件。这有时甚至在maven构建中失败(为什么我还没弄明白)。

我曾尝试使用目录文件进行映射但是(我想我在某处看到了将maven坐标作为目标的目录映射),但还没有成功。

1 个答案:

答案 0 :(得分:2)

您是否知道OGC Schemas and Tools Project? (免责声明:我是作者。)

现在,问你的问题。我的猜测是org.jvnet.jax-ws-commons:maven-jaxb2-plugin不支持&#34; Maven坐标&#34;当你打电话给他们。这是我为org.jvnet.jaxb2.maven2:maven-jaxb2-plugin专门实施的功能(免责声明:我是作者)。

另一方面,剧集文件只是一个JAXB绑定文件。因此,您只需从JAR工件中提取此文件(例如使用maven-dependency-plugin),然后或多或少地包含它就像您已经这样做了。只是没有指向其他模块中的目录,这是不可靠的。