将我们的构建从Ant切换到Maven,我正在尝试从WSDL文件生成代码。
有maven-jaxws-tools-plugin
,但我总是得到一个例外。我还不完全清楚这个插件还有哪些依赖项。
插件配置:
<plugin>
<groupId>org.jboss.ws.plugins</groupId>
<artifactId>maven-jaxws-tools-plugin</artifactId>
<version>1.1.1.Final</version>
<configuration>
<targetPackage>at.dataphone.logis3.wsdl.${projectName}</targetPackage>
<extensions>true</extensions>
<wsdls>
<wsdl>${basedir}/wsdl/DPHItemBarcodesList.wsdl</wsdl>
</wsdls>
</configuration>
<executions>
<execution>
<goals>
<goal>wsconsume</goal>
</goals>
</execution>
</executions>
</plugin>
没有额外的deps我得到:
ClassNotFoundException:org.jboss.ws.api.tools.WSContractConsumer
然后我补充说:
<dependency>
<groupId>org.jboss.ws.native</groupId>
<artifactId>jbossws-native-client</artifactId>
<version>4.0.2.GA</version>
</dependency>
所以我得到了:
java.lang.ClassNotFoundException:com.sun.tools.ws.wscompile.WsimportTool`
如果我补充:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.2.7</version>
</dependency>
但我明白了:
java.lang.ClassNotFoundException:org.jboss.util.xml.JBossEntityResolver`
所以这一直在继续。但我有这种感觉,我不想要所有这些编译时依赖项,而且我可能需要一种方法来告诉插件我的JBoss安装与它的模块。
该插件只有一些文档。
有以下示例:https://developer.jboss.org/wiki/JAXWSToolsMavenPluginSample
但jbossws-cxf-client
不能是依赖项,这是旧代码并使用jbossws-native。
我也不确定jboss-as-maven-plugin是否与它有任何关系,但我不想部署,只生成代码。虽然它没有正常工作,但我确实有插件设置。但是运行mvn jboss-as:deploy
它仍然会在jaxws-plugin上失败,然后才能进行任何部署。
这个例子略有不同,但并不多: https://github.com/tkobayas/example-projects/blob/master/helloworld_jaxws_cxf/pom.xml
答案 0 :(得分:2)
我不熟悉maven-jaxws-tools-plugin
,但您不需要添加编译时依赖项:您只需要将这些依赖项添加为plugin dependencies:
<plugin>
<groupId>org.jboss.ws.plugins</groupId>
<artifactId>maven-jaxws-tools-plugin</artifactId>
<version>1.1.1.Final</version>
<configuration>
<targetPackage>at.dataphone.logis3.wsdl.${projectName}</targetPackage>
<extensions>true</extensions>
<wsdls>
<wsdl>${basedir}/wsdl/DPHItemBarcodesList.wsdl</wsdl>
</wsdls>
</configuration>
<executions>
<execution>
<goals>
<goal>wsconsume</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jboss.ws.native</groupId>
<artifactId>jbossws-native-client</artifactId>
<version>4.0.2.GA</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.2.7</version>
</dependency>
</dependencies>
</plugin>
这样,这些依赖项只会在插件执行期间使用,并且不会被添加到项目编译时依赖项中。当然,只有当您的项目在编译时不依赖于它们时才应该这样做。
然后,您可以在此标记中添加所有必需的依赖项。对于课程org.jboss.util.xml.JBossEntityResolver
,列表中的下一个似乎是jboss-common-core
...
另外,您应该考虑使用Apache CXF项目中的cxf-codegen-plugin
。