如何修复 Buildship 中的“缺少 Gradle 项目配置文件”问题?
Posted
技术标签:
【中文标题】如何修复 Buildship 中的“缺少 Gradle 项目配置文件”问题?【英文标题】:How to fix "Missing Gradle project configuration file" issue in Buildship? 【发布时间】:2017-07-12 14:58:07 【问题描述】:作为 Eclipse 用户,我一直很喜欢 Gradle IDE。但是,此插件现已弃用,取而代之的是新的 Buildship 插件。
在安装了 Buildship 的新 Eclipse IDE 设置后,我在所有 Gradle 项目中都遇到以下错误:
缺少 gradle 项目配置文件:.settings/org.eclipse.buildship.core.prefs
谷歌上有几个页面处理这个问题,但它们似乎都已经过时了。插件的 bugtracker 中还有一个条目设置为“CLOSED FIXED”。好吧,显然,它没有修复。
我做错了吗?任何想法如何解决这个问题?
【问题讨论】:
我在从版本控制中签出项目时遇到此错误,其中缺少org.eclipse.buildship.core.prefs
,因为提交用户甚至不使用 Buildship。问题是:org.eclipse.buildship.core.prefs
可以安全地致力于版本控制吗?
我不认为您可以将这些文件添加到版本控制中,因为 Eclipse 将它们放在工作区元数据文件夹中 - 它可以驻留在与您的实际目录完全不同的目录中项目。所以不行。目前,如果出现问题,您必须通过向导重新导入项目。
org.eclipse.buildship.core.prefs
位于项目的 .settings
文件夹中,不是吗?
啊,是的,你是对的。我以为是.metadata
。我总是将.settings
放在 gitignore 上。所以也许可以将org.eclipse.buildship.core.prefs
签入版本控制。我不知道如果您在另一台计算机上检查它是否有任何绝对路径或其他依赖项可能会中断。我个人建议不要这样做。
删除项目的 Gradle 属性并再次添加 Gradle 属性,它开始为我工作。很棒的@Swiggels
【参考方案1】:
第一步
在 IDE > Properties > Project Natures 中右键单击您的 项目名称 > 在右侧窗格中选择 Gradle Project Nature
> Remove > Apply and Close
第 2 步
在 IDE 中右键单击您的 项目名称 > 配置 > 添加 Gradle Nature
结果
让 Gradle 与 IDE 同步几秒钟,然后
项目根目录下会自动生成.settings
文件。
删除错误
删除Problems
视图中的错误。
【讨论】:
【参考方案2】:也许你可以使用这个方法。通过恢复文件
我不小心删除或丢失了我的 Flutter 项目中的文件。
然后我做一个新方法
在你的flutter项目中输入./android
文件夹。
复制到你的 mac 终端:
touch "org.eclipse.buildship.core.prefs"; echo "connection.project.dir=
eclipse.preferences.version=1" >> org.eclipse.buildship.core.prefs
然后到你的 Flutter 项目中的 ./android/app
文件夹。
touch "org.eclipse.buildship.core.prefs"; echo "connection.project.dir=..
eclipse.preferences.version=1" >> org.eclipse.buildship.core.prefs
【讨论】:
【参考方案3】:最简单的解决方案,只使用鼠标
正如 oehme 所说的(Stefan Oehme - 核心开发人员):https://github.com/eclipse/buildship/issues/504
“Buildship 无法重新创建该文件,因为它不知道您的根项目是什么(Gradle 支持任意项目布局)。您应该检查设置文件或根本不检查任何 Eclipse 文件。检查不支持在 .project 中省略 .settings。”
或者在这里(Stefan Oehme - 核心开发人员):https://discuss.gradle.org/t/do-i-need-to-check-in-settings-org-eclipse-buildship-core-prefs-file/22457/2:
“如果您已签入具有 buildship 特性的 .project 文件,但没有签入设置文件,则会发生这种情况。您可以选择同时签入或不签入以及使用 Gradle 导入向导。”
最简单的解决方案,只使用鼠标如下:
-
右键单击项目,然后单击属性
在属性窗口中,转到Project Natures并删除 Gradle Nature,然后点击Apply and Close按钮
再次打开同一窗口并将 Gradle Nature 添加回,然后点击应用并关闭按钮
项目右键> Gradle > 刷新Gradle项目
每一步之后:1,2,3,4 让eclipse做自己的更新工作,不要快速推送。
其他解决方案是将文件保存在某处并再次将其粘贴到项目中或手动从头开始创建,然后执行:右键单击项目 > Gradle > 刷新 Gradle 项目。
有用的细节:
文件名:org.eclipse.buildship.core.prefs 文件常用编码:ISO_8859_1 文件路径:./setting/org.eclipse.buildship.core.prefs 文件内容,一行:connection.project.dir = eclipse.preferences.version=1
【讨论】:
【参考方案4】:我认真地寻找解决方案,但只找到了解决方法。 Alan47 的解决方案为我创建了文件,但在我的情况下无法正确创建项目。所以我只是复制了创建的文件并以默认方式再次导入了项目:
File -> Import -> General -> Existing Project into Workspace
并再次将文件粘贴到目录中
./.settings
文件名:
org.eclipse.buildship.core.prefs
文件内容只有:
connection.project.dir=
eclipse.preferences.version=1
【讨论】:
拯救了我的一天。很遗憾,Buildship 无法自行恢复。 这是唯一对我有用的建议。请注意,如果是子项目,connection.project.dir
设置可能会有所不同。【参考方案5】:
另一种选择是:
-
移至您的项目路径(找到 gradle 或 gradlew)
Unix:
sh gradlew cleaneclipse
赢:gradlew cleaneclipse
在您的build.gradle
中需要apply plugin: 'eclipse'
-
在 Eclipse 中刷新您的项目。
之后对于 Unix:
sh gradlew eclipse
Win:gradlew eclipse
现在,您的 Eclipse 项目中将缺少 gradle 特性。打开project -> configure -> add gradle nature
的上下文菜单
现在一切应该又好了。
【讨论】:
奇怪的是,/gradlew tasks
告诉我生成的任务被称为cleanEclipse
。两个版本,有和没有大写 E,都运行没有错误。而且我很确定通常 gradle 任务名称是区分大小写的吗?不管怎样,它确实奏效了。
在 gradles NamedDomainObjectCollection
他们写道 equals
用于名称匹配。所以也许 Buildship 覆盖了equals
为我们增加一些便利。 :-)【参考方案6】:
我自己想通了。 “缺少 gradle 项目配置文件”的问题源于将 gradle 项目导入 Eclipse 的方式。
当通过常规的File -> Import -> General -> Existing Project into Workspace
命令导入 gradle 项目时,它将不工作并产生上述错误。
但是,如果您通过 File -> Import -> Gradle -> Existing Gradle Project
导入相同的项目,那么您将获得一个不同的导入向导,并且使用此向导,它就像一个魅力。
我仍然认为这是一个错误,因为导入向导的选择应该无关紧要。不过,选择合适的向导是一种可行的解决方法。
【讨论】:
请注意,这可能不明确,因为在迁移期间可能存在多个构建系统文件(Maven + Gradle 或 ant + Gradle)。此外,这些向导是由第 3 方作者创建的。那么核心框架应该做什么呢?也许它可以提供一个钩子,以便插件可以将逻辑注入“通用项目”向导,让他们从文件中检测他们的“导入程序”是否可能适用并(提供)将它们重定向到不同的向导步骤? (但是,如果多个插件接受这个钩子怎么办?)我认为这可能是在这样一个可扩展的平台中避免的一个困难症状。以上是关于如何修复 Buildship 中的“缺少 Gradle 项目配置文件”问题?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Eclipse Buildship 插件中运行“gradle init”任务?
使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置
Gradle + Buildship - 在 JAR 和项目之间切换依赖关系