【发布时间】:2013-06-07 16:19:56
【问题描述】:
我有几个需要集成的 Web 服务,我可以通过使用 Maven 的 wsimport 插件构建 Web 服务客户端来做到这一点。有问题的 Web 服务都引用企业通用架构文件,因此生成单独的客户端会导致重复代码,其中每个 Web 服务客户端 jar 都包含相同架构的实现。
我想减少这些冗余代码,所以我的第一个想法是构建一个独立的 jarjust 使用从公共模式生成的公共代码。这里的问题是,当我使用 maven 从 WSDL 生成 Web 服务客户端时,它仍会为 WSDL 引用的所有模式构建代码 - 我如何告诉 maven not 为通用模式文件生成代码,因为代码已经在引用的库中?
我确实试过这个:
<resources>
<resource>
<directory>${basedir}/wsdl</directory>
<excludes>
<exclude>**/my_schema.xsd</exclude>
</excludes>
</resource>
</resources>
但 wsimport 仍然会为 my_schema.xsd 生成代码,即使我为已经包含此代码的 jar 创建了依赖项:
<dependencies>
<dependency>
<artifactId>MyCommonCode</artifactId>
<groupId>com.myCompany</groupId>
<version>1.0.0</version>
</dependency>
</dependencies>
【问题讨论】:
-
您是否使用排除进行了过滤?或者由于某种原因这对您的情况不起作用
-
@greedybuddha:是的,我更新了我的测试示例。
-
如果它们都在同一个地方生成并且它们最终生成了冗余代码,那么它们最终不是都会相互覆盖而没有任何重复代码吗?
-
另外,如果你在命令行中使用 wsimport,你怎么能避免这种情况呢?
-
@tieTYT:我认为如果所有客户端都在同一个 maven 项目中生成,那可能是真的。 maven 项目和 Web 服务客户端之间的布局大多是 1:1(我认为原因是并非所有应用程序都需要所有客户端,因此决定使它们更加模块化)。如果我从命令行使用 wsimport,我不知道如何避免这种情况。
标签: java web-services maven wsimport