首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Eclipse中的Maven Eclipse插件和类路径问题

Eclipse中的Maven Eclipse插件和类路径问题
EN

Stack Overflow用户
提问于 2009-12-28 16:25:13
回答 1查看 7.8K关注 0票数 1

我使用的是Eclipse3.51、Maven 2.0.9、Java1.4和WTP2.0(而不是m2Eclipse)的Maven Eclipse插件2.7。

我有一个扁平化的多模块项目,设置如下(父级pom的模块父级,模块A和B依赖C)。

第一次导入这四个模块将显示出预期的编译错误,因为我还没有运行eclipse插件。在本地存储库为空的情况下,运行EclipseClear将解决本地工作区中的所有编译错误和依赖关系。

如果我要对模块B进行一些小的代码更改并再次运行eclipse插件,编译错误将出现在模块A和B中。编译错误涉及无法找到的类。它的类似模块C不再在类路径中供A和B查看。

我查看了.classpath文件,并明确地查看了Eclipse工作区中的正确模块。

如果我删除maven存储库并再次执行eclipse清理,那么有关未解析类的编译错误是固定的。另外,如果我使用useProjectReferences标志运行eclish洁净命令为false,然后用true重新运行它,Eclipse将重新构建我的工作区,错误就会消失。

发生什么事了?

EN

回答 1

Stack Overflow用户

发布于 2009-12-28 21:02:54

第一次导入四个模块将显示编译错误,因为我还没有运行eclipse插件。在本地存储库为空的情况下,运行EclipseClear将解决本地工作区中的所有编译错误和依赖关系。

到目前一切尚好。只有一个问题: Eclipse不是指eclipse:clean,而是指eclipse下的干净,对吗?

如果我要对模块B做一些小的代码更改并再次运行

插件,编译错误将出现在模块A和B中。编译错误涉及无法找到的类。它的类似模块C不再在类路径中供A和B查看。

我不知道为什么在对模块B进行轻微代码更改后运行maven eclipse插件,但是,假设您必须运行,例如,因为您添加了一个依赖项(提到您运行的目标会很有帮助,但没关系)。当在多项目构建中使用maven eclipse插件时,它将默认在Eclipse级别使用项目引用(即A和B依赖于编译的C类,而不是C JAR)。而且,由于Maven和Eclipse共享同一个target/classes文件夹,所以在Maven级别上的干净或编译可能会混淆Eclipse。它不再看到已编译的类,也不会自己编译它们(因为Eclipse中没有发生更改)。在这种情况下,Eclipse清理或重建(即在Eclipse级别)应该可以解决问题。

--我查看了.classpath文件,并明确地查看了.classpath工作区中的正确模块。

是的,这不是问题。问题的根源在于Eclipse和Maven共享编译类的相同文件夹。

如果我删除maven存储库并再次执行eclipse,那么有关未解析类的编译错误是固定的。

您真的不必这样做,如果您使用项目引用,我也不知道maven存储库与此有什么关系。在Eclipse下执行清理和/或重新构建所有项目应该可以解决这个问题。

另外,如果我使用

标志运行useProjectReferences标志为false,然后用true重新运行它,那么Eclipse将重新构建我的工作区,错误就会消失。

您是否使用项目引用?再次,下一次,也许提供您的插件配置在您的问题,这可能会有所帮助。无论如何,您不应该在构建之间接触到这个。决定是否要使用项目引用(我认为它更方便,没有它们,您将需要mvn install C来对A和B进行更改)并坚持这种配置。在mvn构建之后,重新构建Eclipse工作区就足够了。

PS:请注意,您可以将maven eclipse插件配置为使用自定义buildOutputDirectory,例如target/eclipse-classes,但这还有其他缺点(我没有这么做)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1970238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档