maven-jaxws-tools-plugin Error: ClassNotFoundException
maven-jaxws-tools-plugin Error: ClassNotFoundException
将我们的构建从 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>
没有额外的依赖,我得到:
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
我不熟悉 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>
这样,这些依赖项只会在插件执行期间使用,不会添加到您的项目编译时依赖项中。当然,只有当您的项目在编译时不依赖于它们时才应该这样做。
然后您可以在此标记中添加所有必要的依赖项。对于 class org.jboss.util.xml.JBossEntityResolver
,列表中的下一个似乎是 jboss-common-core
...
附带说明一下,您或许应该考虑使用来自 Apache CXF 项目的 cxf-codegen-plugin
。
将我们的构建从 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>
没有额外的依赖,我得到:
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
我不熟悉 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>
这样,这些依赖项只会在插件执行期间使用,不会添加到您的项目编译时依赖项中。当然,只有当您的项目在编译时不依赖于它们时才应该这样做。
然后您可以在此标记中添加所有必要的依赖项。对于 class org.jboss.util.xml.JBossEntityResolver
,列表中的下一个似乎是 jboss-common-core
...
附带说明一下,您或许应该考虑使用来自 Apache CXF 项目的 cxf-codegen-plugin
。