在Version Control中存储持久资源属性

时间:2014-10-30 09:41:55

标签: eclipse eclipse-plugin eclipse-rcp

我有一个插件,通过eclipse的持久属性机制向项目资源添加任意信息。现在这些项目存储在SVN和GIT等版本控制系统中。

持久性属性不会被签入,因为它们存储在工作空间的元数据中,而不是存储在项目内部。

%workspace%\.metadata\.plugins\org.eclipse.core.resources\.projects\%projectname%\.indexes

  • 有没有办法将这些属性保存到项目中并通过版本控制进行管理?
  • 如果没有,是否有人为此尝试过自定义解决方案?

这里有一个问题:

Eclipse: Storing info in .project file

如果要存储不涉及单个资源的项目范围信息,则答案很有用。但我需要将信息连接到文件夹和文件,并将这些信息存储在项目文件系统位置。

2 个答案:

答案 0 :(得分:0)

您可以在'键'中包含资源的路径。项目范围偏好值的一部分。所以:

preferences.putString("/path/to/file/keyword", value);

答案 1 :(得分:0)

我知道这是一个相当古老的问题,但它在搜索" Eclipse项目作用域资源属性时会弹出作为最佳匹配之一"。 (搜索过这个,很明显我自己在寻找解决方案。)

Eclipse提供项目作用域首选项 ProjectScope。这些首选项存储在/<project>/.settings中的文件中,因此可以轻松添加到版本控制中。如果您有例如在项目中设置文件的编码,您将在此目录中找到org.eclipse.core.resources.prefs,您可以看到资源插件(维护此文件)如何使用特定方案来组合属性名称和首选项键中的资源名称。

以此为基础,我实现了一个自定义解决方案,用于在版本控制中存储&#34;持久资源属性&#34; (a.k.a。&#34;项目范围的资源属性&#34;)。您可以查看解决方案here。生成密钥并将属性存储为首选项非常简单易行。此外,我的自定义解决方案会跟踪文件的删除并删除属性以避免让它们弹出&#34;弹出&#34;如果您稍后再次创建具有相同名称的文件。它还跟踪移动/重命名并保留与移动/重命名的文件关联的属性。请注意,如果复制文件,它故意不复制关联的属性,因为这不是我的用例的预期行为。

它可以工作,但是像Eclipse平台这样复杂的环境一样,我可能没有考虑过每个问题。当我有时间时,我会深入挖掘资源插件的源代码,看看如何正确地完成它。同时,它对我来说效果很好。