我正在使用来自各种标准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坐标作为目标的目录映射),但还没有成功。
答案 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
),然后或多或少地包含它就像您已经这样做了。只是没有指向其他模块中的目录,这是不可靠的。