【问题标题】:Use a class field in the 'plugin.xml' for an eclipse plugin将“plugin.xml”中的类字段用于 Eclipse 插件
【发布时间】:2011-10-20 02:51:08
【问题描述】:

我目前正在开发一个小的 Eclipse 插件,我必须处理经典的 'plugin.xml' 东西,例如自然的创建:

<extension
    id="aplugin.natures.MyNature.NATURE_ID.id"
    name="Sample Project Nature"
    point="org.eclipse.core.resources.natures">

现在在这个特定的例子中,我必须在我的插件代码的某个地方,将这个 'id' 作为一个 String 提供给某个 Eclipse 函数。所以我需要创建一个特定的类,例如:

package aplugin.natures;

public class MyNature implements IProjectNature {
    public static final String NATURE_ID = "aplugin.natures.MyNature.NATURE_ID.id"; //$NON-NLS-1$
}

我的问题来了,我复制并粘贴了我的 'id'。我必须承认我并不为此感到骄傲。

所以我的问题是,有人知道直接在 'plugin.xml 中使用 'MyNature' 类中的 'NATURE_ID' 字段的方法吗' 文件?。

最后我想写这样的东西:

<extension id="${aplugin.natures.MyNature.NATURE_ID}" ... >

【问题讨论】:

    标签: java eclipse eclipse-plugin plugin.xml


    【解决方案1】:

    这在设计上是不可能的。

    这个想法是 Eclipse 核心可以为所有已解析的插件/捆绑包加载 plugin.xml 文件,而无需加载/激活插件。解析上面的构造通常需要 Eclipse 解析该类的所有引用 - 在这种情况下为 MyNature - 这很容易导致许多其他相关插件的激活。不好。

    所以 - 按照设计 - plugin.xml 中的所有数据都必须是独立的。 (本地化字符串可能例外)。

    【讨论】:

    • 真可惜,我经常忘记保持我的 id 同步。也许我可以做与我的问题相反的事情,比如在构建类的字段时通过在“plugin.xml”上做一些 xslt 魔术来获取 id。但对我来说它看起来更脏。
    • 为了挑选出许多 ID...您需要一个 ID...:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    相关资源
    最近更新 更多