在eclipse插件开发过程中有时会遇到插件循环依赖的问题,其实本可以避免的,但谁也不能保证当初的设计会有问题。俺就遇到了这个问题,不过有一种解决办法就是通过写扩展点。
比如插件A和插件B,A是项目中所有插件的核心,所有的插件必须依赖于插件A,所有插件都使用A提供的接口和服务。但有时为了降低插件的耦合性,或者保持插件的独立性,一些个性的操作接口,都应该尽量定义在每个插件中,尽量不要定义在A中。比如,在插件B中定义了一个个性wizard,但是A要实例化这个wizard,问什么不在B中直接实例化?唉!不是说了嘛,设计失误,没辙B要使用A中的接口,而A要实例化B中的类,循环了!这可咋办?想来想去,只好在A中写个CoreWizard扩展点,在B中需要A来实例化的wizard只要继承A中的CoreWizard,并且在B中plugin.xml里面实现CoreWizard扩展点,这样A就可以把B中的wizard通过扩展点加载当成自己的CoreWizard来处理。具体实现如下:
A中定义扩展点:
<!----><extension-point id="coreWizards" name="coreWizards" schema="schema/coreWizards.exsd"/>
并实现类CoreWizard.java
<!---->public class CoreWizard extends Wizard implements INewWizard{
private String wizardID = null;
@Override
public boolean performFinish() {
// TODO Auto-generated method stub
return false;
}
public void init(IWorkbench workbench, IStructuredSelection selection) {
// TODO Auto-generated method stub
}
public String getWizardID() {
return wizardID;
}
public void setWizardID(String wizardID) {
this.wizardID = wizardID;
}
}
B中实现扩展点:
<!----><extension
point="coreWizards">
<coreWizards
class="com.mytest.wizards.TemplateCreateWizard"
wizardID="com.mytest.wizards.TemplateCreateWizardID"/>
</extension>
类com.mytest.wizards.TemplateCreateWizard继承了A中的类CoreWizard。
加载扩展点:
<!---->public static CoreWizard getCoreWizard() {
String project = "projectA";
String ID = "coreWizards";
String attr = "class";
String attr1 = "wizardID";
String wizardID = null;
String wizardClass = null;
IExtensionPoint extPoint = Platform.getExtensionRegistry().getExtensionPoint(project, ID);
IConfigurationElement[] extensions = null;
if (null != extPoint) {
extensions = extPoint.getConfigurationElements();
for (int i = 0; i < extensions.length; i++) {
IConfigurationElement ic = extensions[i];
wizardID = ic.getAttribute(attr1);
wizardClass = ic.getAttribute(attr);
CoreWizard ss = null;
ss = (CoreWizard) ic.createExecutableExtension(attr);
return ss.getClass().newInstance();
}
}
return null;
}
通过上面的方法就可以获得CoreWizard的实例,实际上也就是TemplateCreateWizard类的实例。
分享到:
相关推荐
Eclipse插件提供了方便的插件管理界面,使得开发者能更便捷地操作这些插件。 9. **问题检测与修复**:M2E会定期检查POM文件中的问题,如未解析的依赖、无效的配置等,并提供解决方案建议。这有助于保持项目的健康...
4. **调试支持**:插件允许开发者在Eclipse中设置断点,进行单步调试,查看变量值,追踪代码执行流程,这对于查找和解决问题非常有帮助。 5. **项目模板**:提供了AngularJS项目的创建向导,可以快速搭建起一个标准...
- **依赖管理**:帮助管理项目中的Hadoop库和其他相关依赖,自动解决版本冲突。 5. **安装与使用**:下载名为"hadoop2x-eclipse-plugin-2.6.0"的压缩包后,按照Eclipse的插件安装指南进行操作,通常涉及解压、复制...
Eclipse插件通常包含清单文件(MANIFEST.MF),它包含了插件的元数据和依赖关系,以及插件的代码和资源文件。 Eclipse插件开发离不开对Eclipse插件开发工具(PDE,Plugin Development Environment)的掌握。PDE为...
Eclipse SVN插件是开发人员在使用Eclipse IDE进行版本控制时的重要工具,它使得开发者能够在Eclipse环境中方便地与Subversion(SVN)服务器进行交互。Subversion是一款开源的版本控制系统,用于管理项目的源代码和...
- **features**:在Eclipse插件系统中,feature是一个包含一组相关插件和它们的依赖关系的集合,这里可能是m2eclipse的各个功能模块的描述。 总之,m2eclipse是Eclipse与Maven之间的桥梁,为开发者提供了方便、高效...
- `p2.index`:Eclipse插件的更新索引文件,用于安装或更新插件。 - `content.jar` 和 `artifacts.jar`:包含了插件的资源和类文件。 - `buildinfo.json`:可能包含有关构建的信息,如版本、构建日期等。 - `site....
接下来,"site.xml"文件可能是插件的配置文件,它包含了插件的元数据,包括插件名称、版本、依赖项等信息,这些信息用于Eclipse识别和管理插件。在安装过程中,Eclipse会读取这个文件来确定如何正确地安装和启动插件...
这个版本的SVN可能是插件依赖的SVN服务器端或者客户端库,用于实现Eclipse中SVN功能的底层支持。这个版本号比较旧,但在当时可能是稳定且广泛使用的版本。 在实际使用中,安装这个中文SVN插件的步骤通常包括:首先...
Eclipse中的Python插件使得开发者可以在一个熟悉的环境中编写、调试和管理Python项目,提供了丰富的功能和便利性。 1. PyDev插件:PyDev是Eclipse中最知名的Python开发插件之一。它是由Fabio Zadrozny维护的一个...
总的来说,解决"Eclipse Activiti Designer插件依赖包"的问题,需要理解插件的工作原理,正确处理其依赖关系,以及熟悉Eclipse插件的安装和管理机制。通过排查上述可能出现的问题,通常可以成功安装并运行Activiti ...
该插件旨在无缝整合Maven的功能于Eclipse环境中,使得开发者可以直接在IDE内管理项目依赖、执行Maven目标、以及进行构建等操作,无需离开Eclipse界面。这个插件适用于多个版本的Eclipse,包括3.3、3.4、3.5、3.6和...
它在Eclipse插件的安装和更新过程中起到重要作用。 2. **artifacts.xml**: 这个文件记录了插件的构建工件,比如插件的JAR文件和其他资源。它用于Eclipse的插件更新机制,帮助识别和安装所需的插件组件。 3. **site...
Eclipse插件的引入使得开发人员无需离开熟悉的IDE就可以利用Gradle的强大功能。 首先,安装Eclipse Gradle插件通常是通过Eclipse Marketplace完成的。用户可以在市场中搜索"Gradle",找到对应的插件(如EGitGradle...
Eclipse插件是扩展Eclipse功能的一种方式,这些插件可以添加新的编辑器、视图、透视图等。CodeMix插件就是这样一个例子,它扩展了Eclipse IDE,使其能够处理更广泛的现代Web开发任务。离线安装是针对网络环境不稳定...
这个文件通常包含了关于插件依赖的详细信息,比如哪些外部库或组件是必需的,以及如何解决这些依赖。这对于正确安装和运行Drools插件至关重要,因为它确保了所有必要的库都已到位。 在实际使用中,用户需要将这些...
4. `site.xml`:这是Eclipse插件站点的定义文件,包含了插件的元数据,如版本信息、描述、依赖关系等,用于Eclipse插件的安装和更新。 5. `plugins`目录:很可能包含了其他插件或者插件组件,这些可能是GWT开发所需...
`features`目录下的文件是Eclipse的功能组件描述,这些组件定义了插件提供的功能和依赖关系;而`plugins`目录则包含了实际的插件实现,它们是Eclipse运行时加载的二进制代码。 安装过程通常涉及以下步骤: 1. 下载...