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