Eclipse和Gradle类路径不同步:无法解析为类型

我们的Eclipse工作区遇到了令人沮丧的问题。 以下是正在发生的事情的高级示例:

项目A
– src / main / java / …
– build.gradle

项目B
– src / main / java / …
– build.gradle

在运行gradle eclipse并将项目导入Eclipse之后,我们偶尔会得到“MyType无法解析为类型”,即使以下情况属实:

  • 我们的项目在其类路径上有Gradle库容器
  • 项目在其Gradle容器中具有正确的工作区项目
  • CTRL +点击工作的东西显示红色下划线(即编译错误)意味着Eclipse确切知道如何获取这些类型,但编译器找不到它们
  • 命令行Gradle构建按预期工作

整个团队都在发生这种情况,我们无法弄清楚为什么Eclipse不断同步而无法不时编译。 通常解决问题的方法是:

  • 项目>在Eclipse中清理
  • Gradle cleanEclipse或gradle eclipse
  • 重新import项目
  • 等等

其他说明:

  • 使用Gradle版本2.2.1
  • 发生在Eclipse Luna和Eclipse Mars中
  • 使用JDK 8

有没有其他人在Eclipse中使用Gradle项目遇到这些类型的编译问题?

这些问题的一个原因可能是让Gradle生成Eclipse项目元数据/设置文件(通过运行gradle eclipse得到的)。 我知道Maven和Gradle团队确实希望他们的工具(Maven或Gradle)能够生成这些东西,但是他们出了名的做法并不理想。 例如,我上次使用Gradle时,它将.classpath配置为使用硬编码的JRE库路径而不是首选的执行环境。 这种生成文件的糟糕工作会让开发人员感到头疼。

相反,Eclipse的建议是手动配置你的项目(大多数情况下),只让Gradle管理它的Classpath容器,然后检查Eclipse .project,.classpath和.settings文件/文件夹到你的SCM(svn, git等)。 这样,将项目签出到工作区的过程是自动的,并且不需要一直运行gradle eclipsemvn eclipse:eclipse

这就是Eclipse项目最初设计和打算管理的方式,而且效果非常好。 我曾在非常大的项目(Eclipse中有100多个独立项目和数十个开发人员)中使用过类似的设置。 它还减少了从零到运行应用程序的步骤数。

这是Maven / Gradle和Eclipse之间的哲学差异之一; 当它归结为它,IMO,IDE应该管理它的东西,构建/依赖工具应该保持不碍事。

尝试在项目配置中手动获取正确的内容,然后检入这些文件 – 看看它是否不能减轻团队在此区域面临的麻烦。