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

the*_*e19 5 java eclipse gradle

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

ProjectA
- src/main/java/...
- build.gradle

ProjectB
- src/main/java/...
- build.gradle

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

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

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

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

其他说明:

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

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

E-R*_*Riz 6

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

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

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

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

尝试在项目配置中手动获取正确的东西,然后检查这些文件 - 看看它是否不能减轻团队在这个领域面临的麻烦.