Maven自动管理Jar包 - Eclipse中会优先关联到相同的project而不是指定的jar包

大家都知道,从Maven2 开始,Maven可以自动管理Java应用所引用的开发包 (Jar包),即官方所说的transitive dependency (可传递的依赖管理),也就是说Java应用只需要定义其直接引用的Jar包依赖,而无需定义Java应用所引用的所有Jar 依赖。Maven 2可以自动添加Java应用直接引用库所依赖的其它Jar包。

但是今天在开发项目时,在Eclipse中执行Unit Test或者Main方法时碰到了一个怪异的Exception:Porject XXX is missing required Java project YYY. 如下图。



 

这让我 感觉到很奇怪,因为我在tools-cms-client这个project中引入的是一个叫cms-java-typesafe-api的jar包,而不是引入这个project,如下pom定义:



 

后来我才记得我在相同的workspace中有一个project名字就叫cms-java-typesafe-api(该project和cms-java-typesafe-api.jar有相同的三维:groupId, artifactId, version),在Eclipse中如果不关闭该project,eclipse会显示的引入该project中的类,而不是cms-java-typesafe-api.jar中的类。然后显然要做的事情就是把cms-java-typesafe-api project关闭。但是虽然把该项目关闭了,在Eclipse中运行的时候,他还会优先的引用该project中的类,而此时该project又关闭了,所以在Eclipse中就出现了上面的Exception:Porject XXX is missing required Java project YYY

最好的解决办法就是换一个workspace,不要在有这个project:cms-java-typesafe-api的workspace 中的另一个project中引入一个名叫cms-java-typesafe-api.jar 的jar包。

猜你喜欢

转载自josh-persistence.iteye.com/blog/1883387
今日推荐