我有这样的 Apache Cxf maven 插件配置:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<defaultOptions>
<bindingFiles>
<bindingfile>${basedir}/src/main/resources/jaxb-binding.general.xml</bindingfile>
</bindingFiles>
</defaultOptions>
<sourceRoot>
src/main/java/my/generated/services
</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${server1}/Service1.svc?wsdl</wsdl>
</wsdlOption>
<wsdlOption>
<wsdl>${server2}/Service2?wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
我基本上有两个问题,也许有人可以回答:
1) 如何将这 2 个服务端点提取到不同的目录?现在两者都是“src/main/java/my/generated/services”。我想要: src/main/java/my/generated/services/service1 和 src/main/java/my/generated/services/service2 。
2)如何设置生成的java文件包对于Service1来说是my. generated.services.service1 +(生成的文件包名称),对于Service2是my. generated.services.service2 +(生成的文件包名称)?
我尝试使用绑定(bind)文件进行配置,但只找到了特定命名空间的解决方案。但没有找到更通用的内容。
感谢您的帮助!
最佳答案
我发现将文件生成到不同目录的最简单方法是使用 WSDL2Java 插件的两个不同执行,如下所示。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources-service1</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java/my/generated/services</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${server1}/Service1.svc?wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
<execution>
<id>generate-sources-services2</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java/my/generated/services</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${server2}/Service2?wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
关于java - Apache Cxf对不同的包提供不同的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395262/