我正在使用jaxws-maven-plugin的wsimport目标从WSDL生成Java类。开箱即用,这会从XML模式生成可怕的类和方法;例如,来自名为MY_OBJECT的XML元素的名为MYOBJECT的类。
我发现我可以customize my JAXB2 bindings使用外部文件;这对于少数类和方法是可以接受的,但是在这种情况下手动命名所有内容的开销是不可取的。
某些搜索会显示对XJC CamelCase Always插件的引用,但这似乎没有维护,大多数链接都是404。不愿意放弃,我确实找到了一个camelcase-always Maven工件,似乎提供了这个功能,但我不知道如何配置它以便jaxws-maven-plugin使用它。
如何在不指定全部手动的情况下获取CamelCase绑定?
答案 0 :(得分:5)
我没有找到如何使用jaxws-maven-plugin
执行此操作的示例,但我确实找到了使用maven-jaxb2-plugin
的示例。
首先,您需要在POM中添加一个存储库:
<repository>
<id>releases</id>
<name>Releases</name>
<url>https://oss.sonatype.org/content/repositories/releases</url>
</repository>
请注意添加到maven-jaxb2-plugin
执行的插件声明和参数。
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.0</version>
<executions>
<execution>
<id>jaxb-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<generatePackage>YOUR.PACKAGE.HERE</generatePackage>
<args>
<arg>-camelcase-always</arg>
</args>
<bindingDirectory>src/main/binding</bindingDirectory>
<schemas>
<schema>
<url>http://YOUR.WSDL.HERE</url>
</schema>
</schemas>
<extension>true</extension>
<plugins>
<plugin>
<groupId>org.andromda.thirdparty.jaxb2_commons</groupId>
<artifactId>camelcase-always</artifactId>
<version>1.0</version>
</plugin>
</plugins>
</configuration>
</plugin>
有关详细信息,请参阅docs。
答案 1 :(得分:0)
可能对Apache CXF和cxf-xjc-plugin的用户有用。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<extensions>
<extension>org.andromda.thirdparty.jaxb2_commons:camelcase-always:1.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>YOUR.XSD.HERE</xsd>
<packagename>YOUR.PACKAGE.HERE</packagename>
<extensionArgs>
<extensionArg>-camelcase-always</extensionArg>
</extensionArgs>
<extension>true</extension>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>