补/合并插件。性文件中插件通过使用片段
题
在我的插件。支持。帮助的插件。性文件。这些属性文件,包括符的优先页。
我想利用这个插件对不同客户,但是客户名是内部性质的文件。
我要修补性文件,通过使用日食片的机制。因为我现在的片段插件可以贴在着相应的插件在运行时间。
我有该文件的插件。特性的插件。支持。帮助,其中包括行
plugin.name = Copyright XYZ
和我做的有fragemt de。支持。帮助。片段,其中包括文件的插件。性质与行
plugin.name = Copyright ABC
我预计在运行时串的"版权ABC",但是它不是。我测试了相同java类的一个长时间以前,我记得那t他的工作。Java代码碎片放到原来的插件。
你有任何想法,以处理这个吗?或者我会误解的片段的机制?
感谢
编辑:
当我移除的插件。性文件从德。支持。帮助插件,它的工作的预期。碎片的文件拷贝到的插件目录和使用在运行时间。
或者我们来修补somce蚀类 Can_fragments_be_used_to_patch_a_plug
解决方案 2
我已经实现的解决方案是像
首先查找特殊片段的属性文件和比查找默认属性文件。
的代码是(束名称被改变)
public final class FrameworkMessages {
private static final String BUNDLE_NAME = "de.rts.messages"; //$NON-NLS-1$
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
private static final String BUNDLE_FRAGMENT_NAME = "de.rts.fragment"; //$NON-NLS-1$
private FrameworkMessages() {
}
public static String getString(String key) {
try {
return ResourceBundle.getBundle(BUNDLE_FRAGMENT_NAME).getString(key);
} catch (MissingResourceException e) {
// Use messages in this plugin when no external fragment files can found
}
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
public static String getString(String pKey, Object[] pArgument) {
try {
return MessageFormat.format(RESOURCE_BUNDLE.getString(pKey), pArgument);
} catch (MissingResourceException e) {
return '!' + pKey + '!';
}
}
}
其他提示
根据 如何国际化您的Eclipse插件强> 制品
一个插件片段提供了附加功能到其目标插件。结果 在运行时,这些插件组成部分与所有相关的片段合并。
这些贡献可包括代码贡献,并用插件,像属性和HTML文件相关联的资源的贡献。
在换句话说,插件具有经由插件的类加载器访问片段的内容。
Eclipse平台合并插件片段的方式,在该片段中的运行时元素增补原始目标插件。结果 目标插件中没有移动,移除,或以任何方式修改。
由于片段的资源由类加载器位于,插件显影剂具有不需要知道资源是否从插件中的JAR文件或其片段的JAR文件加载一个
我怀疑类装入器检测在plugin.name
的de.support.help
片段之前第一插件de.support.help.fragment
。
在这一点上,我不知道这是可以做到的,因为它之前已经尝试(为的 Eclipse的CheckStyle的插件),但没有成功。
你不能代替的内容的文件片段只增加额外的文件。这是真正的两类、属性文件、图像...
有几个标准方法,用于解决这个问题:
- 你可以添加一个扩展点与这个和其他客户的具体信息。
- 你可以先看一个特殊的文件,而这种回落到普通一如所做的马克斯.
- 你可以有一个可选择的依赖一个插件有关的信息。
我喜欢最后的解决方案,因为这也许是选择之间的替代算法和其他东西,这并不属于中。性文件...