Maven Web Service插件使用安装,而不是部署

时间:2009-12-08 17:31:39

标签: java deployment maven-2 web-services

我有一个使用插件jaxws-maven-plugin的maven模块。我启动并运行了webservice,当浏览到.../myWebservice?wsdl时,我得到了WSDL。没问题。

通过以下方式运行wsimport maven目标时也可以这样做:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>jaxws-maven-plugin</artifactId>
  <executions>
    <execution>
      <goals>
        <goal>wsimport</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <sourceDestDir>src/main/java</sourceDestDir>
      <wsdlUrls>
        <wsdlUrl>http://host/f/soap/fWeb?wsdl</wsdlUrl>
      </wsdlUrls>
  </configuration>
</plugin>

运行时

<plugin>

一切都很好......但是,当我跑

时,它不起作用

<groupId>

查看已注销的参数,它们在两种情况下都是相同的:

</groupId>

经过一段很长的超时后,感觉就像一个http超时,它失败了,显示了这条消息:

<artifactId>

这有点令人困惑,因为它花了这么长时间......事实上,WSDL中没有提到完整的命名空间,根元素是</artifactId>,而不是<executions>,但为什么它可以工作与<execution> ...?

谢谢!
拉乌尔

1 个答案:

答案 0 :(得分:1)

实际上,我不知道为什么mvn clean installmvn clean deploy没有一致的结果。首先,wsimport绑定到generate-sources阶段并且在两种情况下都更早地执行。其次,在deploy之后发生的install阶段没有做更多的事情,如记录所示:

  

在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。

所以,实际上,我没有看到如何将工件复制到存储库会影响wsimport或使构建在与WSDL相关的内容上失败。非常非常奇怪。也许运行mvn -X clean deploy以查看是否可以获得更多信息。

无论如何,我对jaxws-maven-plugin配置有一些建议。

第一个是src/main/java中生成来源。 IMO,生成的源应该位于target目录下,因为您希望能够在clean期间删除它们。所以我建议使用${project.build.directory}/jaxws/wsimport/java或类似${project.build.directory}/generated-sources/jaxws之类的默认值(这是生成的东西的标准maven模式)。但这是一个旁注,这不会解决你的问题:)

第二个建议是关于<wsdlUrls>配置。不使用<wsdlUrls>,为什么不将WSDL(作为文件)放入src/wsdl(或其他位置,在这种情况下,您必须使用{{1}来指定它元素)。这应该有助于解决超时问题。