快速业务通道

发现Eclipse中未解析的插件依赖性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
plugins 文件夹中的 Eclipse 插件

<targetPlatform>\eclipse\links 文件夹中 .link 文件所指向的链接插件

程序员通常会将第二个地方称为 links 文件夹。这个 links 文件夹中包含 0 个或多个文件,文件名通常都是以 “.link” 扩展名结尾。这些文件中包含了一些链接信息,可以使用这些信息定位在磁盘上哪些地方可以找到链接插件。

每个 .link 文件都有一个关键字-值对,其格式为 path=location。(例如,links 文件夹 C:\eclipse\links 中就可能会有很多 .link 文件,其中一个文件的名字可能为 com.ibm.indiver.dependencywalker.link。这个文件中唯一的一行可能类似于 path=c:\myPlugins\dependencyWalker)。这个 .link 文件会将 Eclipse 引导到指定的位置,并在 \eclipse\plugins 文件夹中寻找更多的可用插件。

发现Eclipse中未解析的插件依赖性(2)

时间:2011-02-08 IBM Indiver Dwivedi

创建自己的 Eclipse 插件依赖性遍历程序

编写一个依赖性遍历程序基本上分为两个步骤:首先罗列出所有插件,其次罗列出用户所选择的插件的依赖性。

第一个步骤要负责定位 Eclipse 系统中出现的每个插件,并在一个简单的用户界面(UI)—— 例如表 —— 中为终端用户提供所有插件的清单。这个 UI 还应该为用户提供一些方法来选择希望解析其依赖性的插件。

第二个步骤则要对用户选择的插件的 plugin.xml 文件进行分析,并查找这个 plugin.xml 文件中嵌入的 <import plugin="plugin id"/> 声明。这种努力显然需要对每个插件的 manifest 文件进行递归搜索,从而查明依赖插件的整个链条。对于描述这个插件可能依赖于其他插件的父-兄-子关系,树状视图是最合适的一种 UI。我们还应该可以直观地看出某个 Eclipse 插件注册项是否真正加载了一个物理存在的插件。

步骤 1:罗列 Eclipse 系统中的所有插件

在掌握了以下信息之后,就可以编写一些代码来罗列磁盘上物理存在的所有插件了:

插件主要在 <targetPlatform>\eclipse\plugins 文件夹中。

在其他几个 <someLinkedPath>\eclipse\plugins 文件夹中也可能会找到插件。

从 <targetPlatform>\eclipse\links 文件夹中的 .link 文件中可以获得到每个 <someLinkedPath> 的路径。

下面是罗列 Eclipse 系统中所有插件的详细步骤:

找到目标平台的位置。

准备 links 文件夹的路径。links 文件夹在 \eclipse 文件夹中。

获得 \eclipse\links 文件夹中文件的清单。请参考源代码中的 Utilities.getLinkedPaths() 函数。

查看每个 .link 文件,获取链接 Eclipse 插件的路径。

准备一个所有插件根文件夹的清单(即,<targetPlatform>\eclipse\plugins 文件夹和所有可能的 <someLinkedPath>\eclipse\plugins 文件夹)。

对于每个根文件夹,进入每个插件目录中,并获取 plugin.xml 文件的路径。

对 plugin.xml 文件进行分析,获得插件 ID 和插件版本,并将这些信息保存到一个数据结构中。

回到步骤 6,继续处理下一个插件目录。

清单 2. 准备在 Eclipse 系统下物理存在的所有插件的清单

/**   *   * @return returns a Vector containing PluginData objects.   * Each PluginData object represents a Plugin found under any of the following   * plugin directories   * a. the targetPlatformLocation\eclipse\plugins directory,   * b. other plugin directories as specified by *.link files under   *  targetPlatform\eclipse\links directory   **/ public static Vector getPluginsInTargetPlatform(){   /**   //step1: Get path 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号