【问题标题】:How to specify and read properties in an Eclipse plugin如何在 Eclipse 插件中指定和读取属性
【发布时间】:2013-07-23 05:24:42
【问题描述】:

我有一个使用我自己的插件的 Eclipse 产品。我想根据用户输入读取一些属性。我想在某些用户操作上保留这些属性,并在需要时读回这些属性。这可以使用一些 Eclipse API 来实现吗?

对上述问题的更详细描述:

假设我在配置文件myconfig.ini 中有一个属性abc=xyz。该属性在引导过程中由透视图读取。在使用透视图期间,某些操作将此属性设置为新值xyz=def。现在,我应该能够将新值保存在myconfig.ini 中。所以下次引导发生时,xyz 的值被读取为def 而不是abc。不过,我也可以选择通过编辑myconfig.ini 文件手动将其设置为abc

  1. 我将如何管理myconfig.ini?它应该存在于我的 Eclipse 产品项目中的什么位置?
  2. myconfig.ini 中管理读取、写入和更新属性的最佳 API 是什么?

【问题讨论】:

  • eclipse 偏好 API 可以帮助你vogella.com/articles/EclipsePreferences/article.html
  • @RenéLink 这似乎是首选项配置 - 例如,我看起来更像是在 ini 文件中保留属性值。你知道我是否可以使用 IMemento 接口来实现这一点?可以给个代码sn-p吗?
  • IMemento 旨在保存任意对象的状态。通常在保存和恢复编辑器时(关闭并重新打开 Eclipse)- 它不支持诸如首选项 api 之类的范围。我更喜欢首选项 api,因为它支持范围并且还支持默认值。
  • @RenéLink 请检查我的更新...

标签: eclipse properties eclipse-plugin eclipse-rcp


【解决方案1】:

你可以使用resource markers机制:

IMarker marker = file.createMarker(IMarker.MARKER);
marker.setAttribute(IMarker.MESSAGE, "blabla");
marker.setAttribute("attr", 5);

您可以使用IResource 上的findMarkers 方法搜索标记。 另见FAQ

【讨论】:

  • 我可以将这些属性保存到某个配置文件中吗?
  • 这是否朝着配置的方向发展?看起来它们是用于其他用途的……还是我在这里遗漏了什么?
【解决方案2】:

您应该考虑使用 apache 配置 API http://commons.apache.org/proper/commons-configuration/

它可以读写INI文件,如果你想改变配置文件类型或添加更多配置选项,你可以简单地配置它。

我会在工作区根目录中添加一个隐藏目录,例如${WORKSPACE}/.productName/product.ini 并添加一个ISaveParticipant 以确保ini 文件在关机时得到更新。

您可以使用 ResourcesPlugin 获取工作区

  IWorkspace workspace = ResourcesPlugin.getWorkspace();

并将其解析为绝对路径

  IWorkspaceRoot wsRoot = workspace.getRoot();
  IPath wsPath = wsRoot.getRawLocation();
  IPath absoluteWsPath = wsPath.makeAbsolute();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2012-12-17
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多