maven-jaxws-tools-plugin 错误: ClassNotFoundException

3

在将我们的构建从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
1个回答

2

我不熟悉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>
  <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

很棒的答案!将依赖项添加到插件中 - 这是一个好消息。最终,cxf-codegen-plugin 更容易使用。基本上开箱即用。 - Benjamin Maurer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接