我有一个使用插件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>
...?
谢谢!
拉乌尔
答案 0 :(得分:1)
实际上,我不知道为什么mvn clean install
和mvn 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}来指定它元素)。这应该有助于解决超时问题。