Migarated from here at ‘2012-06-04 17:16:25’.
我最近工作中开始使用maven2作为build构建工具。开始很不适应,但是随着了解的深入,我逐渐感受到maven功能强大。今天还解决了一个在Netbeans maven工程中wsimport的类无法”source insight”的问题。
环境:Netbeans 6.5, Maven 2.0.9
Netbeans安装了Maven相关的插件后可以比较完美地和maven集成。我们在使用中发现一个小的问题:我们的maven工程作为其他web service的client在执行wsimport之后生成了相关的类,编译没有问题。但是我们源代码中引用到相关类的地方Netbeans都会红线标出,表明无法找到相关的符号,而执行build实际上是可以编译的。而且我们无法做到敲个“.”就显示出web service中的所有方法。
问题出在Netbeans没有找到这些通过wsimport生成的class文件。在我们公司的另外一个maven工程中,同样的问题就没有出现,很奇怪。
我通过比较两个工程的pom.xml文件,发现它们存在一些区别。我们的pom.xml文件相关内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>1.9</version> <executions> <execution> <goals> <goal>wsimport</goal> </goals> <configuration> <keep>true</keep> <wsdlUrls> <wsdlUrl>...</wsdlUrl> </wsdlUrls> </configuration> </execution> </executions> </plugin>
|
而另外一个工程的pom.xml如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>1.11</version> <executions> <execution> <goals> <goal>wsimport</goal> </goals> </execution> </executions> <configuration> <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir> <resourceDestDir>${project.build.directory}/generated-sources/wsimport</resourceDestDir> <keep>true</keep> <wsdlUrls> <wsdlUrl>...</wsdlUrl> </wsdlUrls> </configuration> </plugin>
两个文件的区别主要有3点
1. “jaxws-maven-plugin”的版本;
2. "<configuration>"设置的位置;
3. 是否指定"<sourceDestDir>"和"<resourceDestDir>"设置。
通过逐一排除,发现最终的问题出在:
```xml <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir> <resourceDestDir>${project.build.directory}/generated-sources/wsimport</resourceDestDir>
|
只要指定这两个路径Netbeans就可以找到生成的class文件,否则使用默认的路径就不行。
问题解决了,不过不清楚Netbeans到底是通过什么算法到哪些路径查找wsimport生成的class文件,有知道的高手请不吝赐教,呵呵!