maven-jaxws-tools-plugin错误:ClassNotFoundException

时间:2016-01-29 14:29:45

标签: java web-services maven jboss jax-ws

将我们的构建从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

1 个答案:

答案 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