`
youngerbaby
  • 浏览: 115102 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于解决eclipse中的插件依赖

阅读更多

在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中Maven插件

    Eclipse插件提供了方便的插件管理界面,使得开发者能更便捷地操作这些插件。 9. **问题检测与修复**:M2E会定期检查POM文件中的问题,如未解析的依赖、无效的配置等,并提供解决方案建议。这有助于保持项目的健康...

    AngularJS Eclipse 1.2.0 插件下载

    4. **调试支持**:插件允许开发者在Eclipse中设置断点,进行单步调试,查看变量值,追踪代码执行流程,这对于查找和解决问题非常有帮助。 5. **项目模板**:提供了AngularJS项目的创建向导,可以快速搭建起一个标准...

    eclipse hadoop2 插件

    - **依赖管理**:帮助管理项目中的Hadoop库和其他相关依赖,自动解决版本冲突。 5. **安装与使用**:下载名为"hadoop2x-eclipse-plugin-2.6.0"的压缩包后,按照Eclipse的插件安装指南进行操作,通常涉及解压、复制...

    Eclipse插件开发学习笔记.pdf

    Eclipse插件通常包含清单文件(MANIFEST.MF),它包含了插件的元数据和依赖关系,以及插件的代码和资源文件。 Eclipse插件开发离不开对Eclipse插件开发工具(PDE,Plugin Development Environment)的掌握。PDE为...

    eclipse svn 插件

    Eclipse SVN插件是开发人员在使用Eclipse IDE进行版本控制时的重要工具,它使得开发者能够在Eclipse环境中方便地与Subversion(SVN)服务器进行交互。Subversion是一款开源的版本控制系统,用于管理项目的源代码和...

    m2eclipse eclipse maven插件

    - **features**:在Eclipse插件系统中,feature是一个包含一组相关插件和它们的依赖关系的集合,这里可能是m2eclipse的各个功能模块的描述。 总之,m2eclipse是Eclipse与Maven之间的桥梁,为开发者提供了方便、高效...

    Eclipse Git插件包

    - `p2.index`:Eclipse插件的更新索引文件,用于安装或更新插件。 - `content.jar` 和 `artifacts.jar`:包含了插件的资源和类文件。 - `buildinfo.json`:可能包含有关构建的信息,如版本、构建日期等。 - `site....

    Eclipse SVN插件(中文版本及安装教程site-1.0.6)

    接下来,"site.xml"文件可能是插件的配置文件,它包含了插件的元数据,包括插件名称、版本、依赖项等信息,这些信息用于Eclipse识别和管理插件。在安装过程中,Eclipse会读取这个文件来确定如何正确地安装和启动插件...

    eclipse中文SVN插件

    这个版本的SVN可能是插件依赖的SVN服务器端或者客户端库,用于实现Eclipse中SVN功能的底层支持。这个版本号比较旧,但在当时可能是稳定且广泛使用的版本。 在实际使用中,安装这个中文SVN插件的步骤通常包括:首先...

    Eclipse中Python插件

    Eclipse中的Python插件使得开发者可以在一个熟悉的环境中编写、调试和管理Python项目,提供了丰富的功能和便利性。 1. PyDev插件:PyDev是Eclipse中最知名的Python开发插件之一。它是由Fabio Zadrozny维护的一个...

    eclipse activiti desiger插件依赖包

    总的来说,解决"Eclipse Activiti Designer插件依赖包"的问题,需要理解插件的工作原理,正确处理其依赖关系,以及熟悉Eclipse插件的安装和管理机制。通过排查上述可能出现的问题,通常可以成功安装并运行Activiti ...

    maven2 for Eclipse dropins插件

    该插件旨在无缝整合Maven的功能于Eclipse环境中,使得开发者可以直接在IDE内管理项目依赖、执行Maven目标、以及进行构建等操作,无需离开Eclipse界面。这个插件适用于多个版本的Eclipse,包括3.3、3.4、3.5、3.6和...

    Eclipse svn插件1.65.zip

    它在Eclipse插件的安装和更新过程中起到重要作用。 2. **artifacts.xml**: 这个文件记录了插件的构建工件,比如插件的JAR文件和其他资源。它用于Eclipse的插件更新机制,帮助识别和安装所需的插件组件。 3. **site...

    eclipse gradle 插件

    Eclipse插件的引入使得开发人员无需离开熟悉的IDE就可以利用Gradle的强大功能。 首先,安装Eclipse Gradle插件通常是通过Eclipse Marketplace完成的。用户可以在市场中搜索"Gradle",找到对应的插件(如EGitGradle...

    最新CodeMix eclipse 插件离线安装文件

    Eclipse插件是扩展Eclipse功能的一种方式,这些插件可以添加新的编辑器、视图、透视图等。CodeMix插件就是这样一个例子,它扩展了Eclipse IDE,使其能够处理更广泛的现代Web开发任务。离线安装是针对网络环境不稳定...

    Drools5.0.1 eclipse插件

    这个文件通常包含了关于插件依赖的详细信息,比如哪些外部库或组件是必需的,以及如何解决这些依赖。这对于正确安装和运行Drools插件至关重要,因为它确保了所有必要的库都已到位。 在实际使用中,用户需要将这些...

    GWT Eclipse 4.4 插件包

    4. `site.xml`:这是Eclipse插件站点的定义文件,包含了插件的元数据,如版本信息、描述、依赖关系等,用于Eclipse插件的安装和更新。 5. `plugins`目录:很可能包含了其他插件或者插件组件,这些可能是GWT开发所需...

    eclipse svn1.8插件下载

    `features`目录下的文件是Eclipse的功能组件描述,这些组件定义了插件提供的功能和依赖关系;而`plugins`目录则包含了实际的插件实现,它们是Eclipse运行时加载的二进制代码。 安装过程通常涉及以下步骤: 1. 下载...

Global site tag (gtag.js) - Google Analytics