1

我正在使用来自各种标准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 依赖项目的目标目录中获取剧集文件。这有时甚至在 Maven 构建中失败(为什么我还没有弄清楚)。

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

4

1 回答 1

2

您知道OGC 模式和工具项目吗?(免责声明:我是作者。)

现在,回答你的问题。我的猜测是它org.jvnet.jax-ws-commons:maven-jaxb2-plugin不支持您所说的“Maven 坐标”。这是我专门为我实现的功能org.jvnet.jaxb2.maven2:maven-jaxb2-plugin(免责声明:我是作者)。

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

于 2014-03-19T20:37:55.970 回答