我正在使用NetBeans(6.8)的项目。我们使用几种不同的Web服务,我们已将其添加为Web服务引用,Netbeans为我们自动生成Ant wsimport
脚本。非常方便,有一个缺点:每次调用ant
时都会重新编译Web服务客户端。这大大减慢了构建过程,并导致sword-related injuries, maimings and deaths的数量猛增。
通常,我会通过更改<{p>}中的wsimport
元素来解决此问题
<wsimport
sourcedestdir="${build.generated.dir}/jax-wsCache/PonyService"
destdir="${build.generated.dir}/jax-wsCache/PonyService"
wsdl="${wsdl-PonyService}"
catalog="catalog.xml"
verbose="true"/>
到
<wsimport
sourcedestdir="${build.generated.dir}/jax-wsCache/PonyService"
destdir="${build.generated.dir}/jax-wsCache/PonyService"
wsdl="${wsdl-PonyService}"
catalog="catalog.xml"
verbose="true">
<produces dir="${build.generated.dir}/jax-wsCache/PonyService" />
</wsimport>
但我不能,'因为Ant脚本的这一部分是自动生成的。如果我右键单击PonyService
Web服务引用并选择编辑Web服务属性⇒ wsimport
选项,我可以向{{{}添加属性1}}元素,但不是子元素。
所以:除了黑客自动生成的Ant脚本之外,如何将wsimport
子元素添加到produces
?
或者更一般地说:每次构建时,如何让NetBeans生成的wsimport
不重新编译Web服务客户端?
(同样刊登在NetBeans EE forum上。)
答案 0 :(得分:3)
我可能会回答这个发霉的问题。自动代码生成旨在为Project提供Web服务客户端。代码在单独的Web Service包文件夹下生成,生成的包在其下。生成该代码后,不再需要自动生成。代码可供使用。
备份一切之前做任何事情!
将生成的代码包从该文件夹拖放到主源文件夹。 Web Service包文件夹当然会消失,因为那里什么都没有。 Web服务客户端定义仍然存在 - 这是我们通常刷新定义的地方。删除它。它不再需要了。现在做一个清洁重建。结果是项目中的代码包与您编写的其他代码一样 - 并且在每次构建时都不会查询远程Web服务。
是的,您已经失去了从WSDL动态重新生成代码的能力,但是如果您确实需要这样做,只需重命名当前包,然后重新生成新代码并重复上述操作并删除冗余代码很舒服。您还可以从源树中删除META-INF节点。我发现这需要几次删除操作。删除.java代码模块以外的所有内容并进行重建。我的代码没有问题就完成了远程连接。
当我意识到Subversion忽略生成的代码时,我做了同样的事情。生成的文件夹不包含.svn文件,因此我无法将该代码提交到我的存储库中。将代码集成到项目中的唯一方法是将其物理复制 - 然后我意识到其他问题也已解决。
花了2年才得到解决方案,但我希望这有助于某人...
答案 1 :(得分:0)
您是否尝试过NetBeans 6.9?我只是问,因为我的jaxws-build.xml
看起来与你的不同(所有自动生成NetBeans)。
<wsimport
sourcedestdir="${build.generated.dir}/jax-wsCache/ListProductsService"
destdir="${build.generated.dir}/jax-wsCache/ListProductsService"
wsdl="${wsdl-ListProductsService}"
catalog="catalog.xml"
extension="true"
verbose="true"
wsdlLocation="file:/C:/NetBeansProjects/wsclient/ListProductsService.wsdl"
xendorsed="true">
<depends file="${wsdl-ListProductsService}"/>
<produces dir="${build.generated.dir}/jax-wsCache/ListProductsService"/>
</wsimport>
上述wsclient
项目可以在没有Web服务引用联机的情况下进行清理和构建。