【Eclipse插件开发】Eclipse p2入门

p2基础

文件布局

  在p2之前,许多 Eclipse 用户绕过 Update Manager 并通过将新插件转储到eclipse/plugins/目录中并使用 -clean 命令行参数重新启动来安装新插件。这种“狂野”的方法有很多缺点,我们不会在这里讨论,但可以说不推荐这种安装方法。尽管 p2 会检测直接添加到plugins文件夹中的插件(具有相关的启动性能成本),但不支持对p2 安装在此目录中的插件进行更改。如果您手动删除 p2 安装的插件,或尝试用不同版本替换,p2 将无法检测到它并且可能会损坏。

  p2建议用户不要手动在plugin目录中瞎搞,如果想绕过p2的安装操作安装一个插件的话,那就把野生的插件扔到dropins里,而不是plugins目录。

  简单的经验法则是:如果您手动添加了某些内容,则可以手动删除它。如果通过 p2 安装,则应通过 p2 卸载。较短的经验法则是:如果可以避免,请不要弄乱插件文件夹。p2 提供了一个新的 dropins 文件夹,它功能更强大,并允许将 p2 管理的内容与其他方式管理的内容(如下所述)分开。

  当您安装支持 p2 的 Eclipse 应用程序时,您会注意到一些以前不存在的新文件和目录。这是典型 Eclipse 安装树的子集,其中突出显示了一些新内容:

eclipse/
├── configuration/
│   ├── config.ini
│   └── org.eclipse.equinox.simpleconfigurator/
│       └── bundles.info
├── dropins/
├── features/
├── p2/
├── plugins/
├── eclipse.exe
└── eclipse.ini

  文件bundles.info包含当前系统中安装的所有插件的列表。在启动时,此文件中列出的所有插件都作为要运行的插件集提供给 OSGi。

  插件目录或其他地方的任何额外插件都将被忽略。如果您真的想强制 Eclipse 在安装了一组特定的包的情况下启动,您可以手动编辑此文件以获得您需要的内容。但是,除非您只是在进行测试,否则不建议编辑此文件。但是,了解此文件很有用,这样您就可以准确查看正在运行的系统中安装的内容。通常,p2 是此文件与Eclipse世界之间的接口。客户端通过 API、GUI 或下面描述的一些工具向 p2 发起供应请求,因此 p2 可以通过更新 bundles.info 文件从 OSGi 运行时安装或卸载包。

  如果您不想使用 p2 用户界面,新的dropins文件夹是您可以放入额外插件的地方。有关更多详细信息,请参阅dropins部分。为了向后兼容,p2 还将检测放入plugins目录的额外插件,并将任何发现的包安装到系统中。

  请注意,上面的目录结构只是基于 Eclipse 的应用程序的示例布局。实际上,很少有这种结构能够保证采用这种形状。可以使用 -configuration 命令行参数将配置目录与安装的其余部分分开存储。bundles和features可能位于磁盘上其他地方的共享捆绑包池中。eclipse.ini 和 eclipse.exe 文件可能使用不同的名称。当单个管理代理正在配置多个应用程序时,p2 目录也可以存储在其他地方。简而言之,您最好不要在代码中使用Eclipse的安装路径作为相对路径去索引一些文件,因为Eclipse目录结构不一定是上述结构。

dropins

供应操作通常应使用 p2 UI 或通过调用p2 工具或 API 进行。但是,在某些情况下,脚本需要通过文件系统操作安装插件和功能,并让系统在启动时或运行时动态发现新内容。为了支持这种对系统的低级操作,p2 支持监视目录的概念。监视目录是用户或脚本可以放置文件并让 p2 发现它们的地方。可以对监视目录应用各种策略,以配置何时检查新内容,以及是否急切安装发现的内容。

Eclipse 平台附带一个名为dropins的默认监视目录。dropins 文件夹配置为在启动期间进行扫描,并将更改立即应用于正在运行的系统。因此可以像过去使用的插件目录一样使用 dropins 文件夹。

这里旧行为的一个微妙变化是,添加到dropins文件夹中的插件和功能正确安装到系统中,而不是强制安装。这意味着 p2 有机会确认新插件与其他已安装的插件,它甚至可以出去获取新插入的插件的任何缺失的先决条件。这也意味着您以后可以使用 GUI 安装依赖于dropins文件夹中插件的额外功能,因为 p2 知道它们并且可以推断它们的依赖关系。换句话说,通过dropins文件夹安装的新插件的行为与通过用户界面安装的插件完全一样。请注意,更新位于dropins下的插件使用 p2 UI 的文件夹将导致更新的插件被保存在主 eclipse/plugins 和 eclipse/features 文件夹下,而不是像预期的那样作为旧版本插件的兄弟姐妹保存在dropins层次结构下

Supported dropins formats

dropins 文件夹支持多种布局,具体取决于应用程序的规模及其各部分所需的分离程度。最简单的布局是将 jar 或目录格式的插件直接放入 dropins 文件夹中
reference :https://wiki.eclipse.org/Equinox/p2/Getting_Started#Dropins

Debugging dropins

如果您尝试使用 dropins,但你bundle并没有被,请首先确保org.eclipse.equinox.ds和org.eclipse.equinox.p2.reconciler.dropins被标记为自动启动。

dropins 的解析错误默认被忽略。要启用有用的日志消息,请将以下跟踪选项放在.options文件中:

org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true
然后使用“ -debug path/to/.options ”运行

bundle pooling

在 p2 之前,每个 Eclipse Application都有自己的私有plugins目录,用于保存该应用程序专属的软件(或插件)。这有一个缺点,即安装了两个或多个基于 Eclipse 的应用程序的系统最终会导致软件(或plugins)和其他artifacts的大量重复。此外,必须为每个应用程序单独升级公共部分,这通常导致本地系统上其他地方已经可用的软件下载速度缓慢。

为了避免这个重复问题,p2 本身支持bundle池的概念。使用bundle池时,多个应用程序共享一个公共插件目录,用于存储它们的软件。没有重复的内容,升级软件时也没有重复的下载。windows系统下使用了bundle池的Eclipse应用具有类似如下的布局:

Application1/
   configuration/
     config.ini
     ... other configuration files for Application1...
   Application1.exe
   Application1.ini
   
Application2/
   configuration/
     config.ini
     ... other configuration files for Application2...
   Application2.exe
   Application2.ini
   
 ...
 
 Documents and Settings
   Username
     .p2/
       org/eclipse.equinox.p2.core
       org/eclipse.equinox.p2.director
       org/eclipse.equinox.p2.engine
       org/eclipse.equinox.p2.touchpoint.eclipse
         plugins/      <-- shared bundle pool

通过这种布局,所有软件都存储在应用程序安装区域之外的单个plugins目录中。p2 负责确保系统中各种应用程序所需的bundle存在于bundle池中。

Installer

现在有一个Equinox/p2/Installer的安装器,将演示安装 Eclipse Project SDK。该安装程序既支持传统的独立安装,也支持使用bundle pooling 的安装

Running the p2 UI from a self-hosted workbench

我们尚不支持正确配置的自托管 p2 系统(请参阅错误 224658)。这意味着如果您运行自托管工作台,则启动的 Eclipse 将无法识别 p2。p2 UI 会注意到这一点并告诉您它无法打开。

如果您只想开发或以其他方式使用新 UI,并且您不关心自托管工作台未配置,您可以加载org.eclipse.equinox.p2.ui.sdk项目并更改此代码在ProvSDKUIActivator 中。

 ProvSDKUIActivator.ANY_PROFILE = true;

这将允许您启动 UI,但请注意 UI 将在主机工作台的安装配置文件上运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【CSDN首发】,百度上的不是完整版本,非本人发布 本教程素材来源于网络,经过本人的整理、添加以及部分的重写,将原有的Eclipse3.3版本的一些内容完全迁移到Eclipse3.6版本上来。基于开源以及分享的精神,特地将教程分享到网络上,希望所有需要的朋友因此而受益,也希望大家能有版本意识,转载时注明来自salever@126.com。 之前有一套基于Eclipse3.3版本的教程,也是本人整理,由于本人的疏忽,导致网络上的版本各不相同,但分享已久,无法改变,希望大家谅解并使用新版本的教程。 本教程由本人发布在www.ceclipse.org以及本人的blog中,希望对大家有所帮助,也希望各位喜欢分享的朋友在转载时注明,谢谢。 手头有一些不错的Eclipse资料,只可惜它用的Eclipse还是3.3版本的,很多东西都已经无法使用。最近抽些时间,更新到eclipse3.6上来,既作为为广大Eclipser入门plugin/RCP开发的一个方便之门,也是对自己近年来学习的一个总结吧。 每一章都会单独提取出来,并尽可能的独立于其他章节,更新中的源代码工程也会附加在附件里面下载。 等到所有的章节都弄完以后,再统一发一个完整版本。 特点: 1,基于Eclipse 3.6.0 2,所有代码均可直接复制运行 3,简单、全面,合适初学者入手 目录 1 富客户端平台 .....................................................................................................................................9 1.1 概述 ..............................................................................................................................................9 1.2 ECLIPSE RCP 建设风格——件,扩展和扩展点 .....................................................................9 1.3 RCP与PLUGIN ...............................................................................................................................9 2 创建第一个RCP程序 ........................................................................................................................11 2.1 创建一个RCP程序 ......................................................................................................................11 2.2 启动RCP程序 ..............................................................................................................................15 2.3 程序VS 产品 ..............................................................................................................................17 2.4 维护LAUNCH配置 .......................................................................................................................17 2.5 可能的APPLICATION ID 错误: ..................................................................................................20 2.6 应用程序的PLUGIN ID ................................................................................................................21 3 ACTIONS的用法(菜单栏和工具栏) ............................................................................................22 3.1 概述 ............................................................................................................................................22 3.2 通过编码添加 .............................................................................................................................22 3.3 “扩展”方式添加菜单和工具栏 ..................................................................................................25 3.4 添加全局快捷键 .........................................................................................................................31 3.4.1 Command+Handler+Binding 绑定 ......................................................................................31 3.4.2 Action+Command+Binding绑定 ..........................................................................................33 4 系统托盘 ...........................................................................................................................................37 5 视图 ...................................................................................................................................................42 5.1 添加示例视图 .............................................................................................................................42 5.2 添加自定义视图 .........................................................................................................................47 5.3 向VIEW里添加ACTION ................................................................................................................52 RCP/Plug-in 开发自学教程 salever@126.com - 4 - 6 编辑器 ...............................................................................................................................................58 6.1 概述 ............................................................................................................................................58 6.2 创建工程 ....................................................................................................................................58 6.3 添加编辑器 ................................................................................................................................59 6.4 调用编辑器 ................................................................................................................................67 6.5 实例:文本编辑器实现 .............................................................................................................68 6.5.1 新建工程 ..............................................................................................................................68 6.5.2 添加菜单栏和工具栏 ..........................................................................................................70 6.5.3 添加编辑器 ..........................................................................................................................75 7 对话框 ...............................................................................................................................................86 7.1 概述 ............................................................................................................................................86 7.2 预定义的对话框 .........................................................................................................................87 7.2.1 概述 .....................................................................................................................................87 7.2.2 创建工程 ..............................................................................................................................87 7.2.3 添加菜单 ..............................................................................................................................87 7.2.4 调用对话框 ..........................................................................................................................87 7.3 用户自定义对话框 .....................................................................................................................89 7.3.1 概述 .....................................................................................................................................89 7.3.2 创建SWT/JFace工程 ...........................................................................................................89 7.3.3 自定义Dialog .......................................................................................................................91 7.3.4 说明 .....................................................................................................................................97 8 向导 ...................................................................................................................................................98 8.1 概述 ............................................................................................................................................98 8.2 示例 ............................................................................................................................................98 9 首选项 .............................................................................................................................................106 RCP/Plug-in 开发自学教程 salever@126.com - 5 - 9.1 首选项 ......................................................................................................................................106 9.2 使用首选项 ...............................................................................................................................106 9.3 首选项页 ..................................................................................................................................112 10 添加状态栏 ...................................................................................................................................117 10.1 简介 ........................................................................................................................................117 10.2 安装状态栏 .............................................................................................................................117 10.3 初始化状态条 .........................................................................................................................118 10.4 控制状态栏 .............................................................................................................................120 11 透视图 ...........................................................................................................................................123 11.1 简介 ........................................................................................................................................123 11.2 添加透视图 .............................................................................................................................123 11.3 显示透视图工具栏 .................................................................................................................128 11.4 显示透视图菜单 .....................................................................................................................130 12 进度条 ...........................................................................................................................................133 12.1 简介 ........................................................................................................................................133 12.2 进度条对话框 .........................................................................................................................133 12.3 JOB进度条 ...............................................................................................................................135 13 使用第三方JAR .............................................................................................................................140 13.1 概述 ........................................................................................................................................140 13.2 向构建路径中添加JAR ...........................................................................................................140 13.3 使JAR在你的运行路径里有效 ................................................................................................141 14 提示和策略 ...................................................................................................................................143 14.1 控制台日志 .............................................................................................................................143 14.2 保存用户的布局 .....................................................................................................................145 RCP/Plug-in 开发自学教程 salever@126.com - 6 - 14.3 获得DISPLAY ............................................................................................................................146 14.4 使用ECLIPSE的“保存”ACTION .................................................................................................146 14.5 向你的程序添加错误日志视图 .............................................................................................146 15 产品 ...............................................................................................................................................149 15.1 概述 ........................................................................................................................................149 15.2 PRODUCT配置文件 ...................................................................................................................149 15.3 测试你的产品 .........................................................................................................................153 15.4 欢迎页面 ................................................................................................................................153 15.5 商标 ........................................................................................................................................154 15.6 风格化LAUNCHING ..................................................................................................................155 15.7 发布你的产品 .........................................................................................................................156 15.8 创建一个帮助件工程 .........................................................................................................159 16 专题一 ECLIPSE的版本和发行包 ..............................................................................................164 16.1 版本 VERSION .........................................................................................................................164 16.1.1 版本的理解 ......................................................................................................................164 16.1.2 Eclipse的版本 ...................................................................................................................164 16.1.3 版本的选择和下载 ..........................................................................................................164 16.2 发行包 EDITION ......................................................................................................................166 16.2.1 发行包的理解 ..................................................................................................................166 16.2.2 Eclipse的发行包 ...............................................................................................................166 17 专题二 ECLIPSE的国际化与语言包 ..........................................................................................169 17.1 国际化 ....................................................................................................................................169 17.1.1 Externalize Strings ............................................................................................................169 17.1.2 中文属性文件 ..................................................................................................................175 17.1.3 国际化文件 ......................................................................................................................176 17.1.4 指定语言环境 ..................................................................................................................176 RCP/Plug-in 开发自学教程 salever@126.com - 7 - 17.1.5 Propedit工具 .....................................................................................................................177 17.2 语言包 ....................................................................................................................................177 17.2.1 Babel小组 .........................................................................................................................177 17.2.2 中文语言包的下载 ..........................................................................................................178 18 专题三 DECORATOR与MARKER的使用 .................................................................................180 18.1 简介 ........................................................................................................................................180 18.2 扩展DECORATOR ......................................................................................................................180 18.3 扩展MARKER ...........................................................................................................................184 19 专题四 RUN/DEBUG LAUNCHER实现 ....................................................................................190 19.1 ECLIPSE RUN/DEBUG 实现流程 ...............................................................................................190 19.2 扩展CONFIGURATIONTYPE .......................................................................................................192 19.3 扩展ILAUNCHSHORTCUT .........................................................................................................194 19.4 创建RUN/DEBUG CONFIGURATION界面 ..................................................................................197 19.5 指定RUN/DEBUG显示图片 .....................................................................................................204 19.6 说明 ........................................................................................................................................205 20 专题五 EQUINOX P2 方式实现RCP自动更新 .........................................................................207 20.1 概述 ........................................................................................................................................207 20.2 示例 ........................................................................................................................................207 20.2.1 Feature概念 .......................................................................................................................207 20.2.2 配置Product .....................................................................................................................210 20.2.3 配置Feature ......................................................................................................................211 20.2.4 product导出 ......................................................................................................................213 20.2.5 配置Equinox P2 ...............................................................................................................214 20.2.6 配置 Update Site .............................................................................................................215 21 专题六 COMMON NAVIGATOR FRAMEWORK初探 .............................................................216

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值