基本面投资
本“ 插件开发101 ”系列文章都是关于开发插件的。 但是在开始之前,我们需要确保我们有一个适当的环境来开发插件。 第一步是从Eclipse.org下载包含插件开发环境(PDE)的Eclipse发行版。 我建议下载最新版本的Eclipse Classic。 在本系列中,我们将使用Eclipse V3.4(M5)的里程碑版本。 完成此操作后,您就可以开始了。 (请参阅相关主题 ,了解在哪里可以找到Eclipse和其他背景信息,如果你是新来的Eclipse)。
为了使理解插件开发更容易,本文将遵循图1中详细介绍的工作流程。在本系列的第1部分中,我们将重点介绍工作流程的前五个步骤。 我们将在第2部分中保留最后两个步骤,该步骤将重点介绍富客户端应用程序。
在深入探讨插件创建的细节之前,让我们讨论一下究竟是什么插件。 从技术上讲,插件是一个自包含且自描述的Java™存档(JAR)。 它是自包含的,因为它包含了插件需要运行的代码和资源。 它是自描述的,因为它包含说明它是什么,它对世界的需求以及对世界做出的贡献的信息。 在插件中,通常会看到两个描述符文件:MANIFEST.MF和plugin.xml。
插件开发工作流程的第一部分涉及创建插件项目。 在Eclipse中,可以通过选择New> Project ...菜单选项轻松完成此操作。 在显示的向导中,选择“ 插件项目”作为要创建的项目类型。
与其他任何Eclipse项目一样,该向导会要求您选择一个项目名称。 我建议helloworld
。 还有一个选择目标平台的选项。 在这种情况下,目标平台仅表示您将目标是Eclipse版本还是Equinox之类的OSGi框架。 在这种情况下,我们将以3.3版本的Eclipse为目标,以使事情简单明了。 “新建插件项目”向导的下一页重点介绍插件内容。
在插件内容向导页面上,我们必须完成一个表单以使我们的插件符合Eclipse。 插件标识符是一个字段,代表您的插件的唯一标识符。 没有其他插件可以共享相同的标识符。 该插件的版本是由四个部分(你整数和一个字符串)分别命名为major.minor.service.qualifier(见相关主题的Eclipse插件版本指南)。 插件名称仅表示人类可读的名称。 插件提供者字段是人类可读的字符串,表示插件的作者。 简而言之,执行环境(EE)字段表示捆绑软件能够在其上运行的最低JRE大小(请参阅参考资料 )。
该向导为我们提供了生成插件激活器的选项。 插件激活器只是一个用于控制插件生命周期的类(可以将其视为启动和停止方法)。 通常,当不再需要您的插件时,激活器负责设置事物并正确处理资源。 在这种情况下,我们需要一个激活器,一个为UI做出贡献的插件,并且我们正在创建一个Rich Client Platform(RCP)应用程序(请参阅参考资料 )。
插件创建的最后一步涉及选择一个模板(请参见图4),以新插件为基础。 当您在创建插件方面更高级时,通常会跳过此步骤。 但是,初学者需要从某个地方开始,并且Eclipse SDK附带了许多模板来帮助您入门。 在这种情况下,我们选择带有视图应用程序的基本Hello World。
完成上一步后,在工作区中创建了一个新插件。 现在为我们提供了一个编辑器(请参见图5),以帮助我们使用新的插件。 我们在编辑器中看到的第一页是“概述”页面,其中包含可修改的插件标识符信息,其中的各节描述了可以在我们的插件中编辑的各种项目。 例如,我们看到了我们先前使用图4所示的模板定义的标识符(ID)和版本字段。
插件冒险的下一步涉及添加扩展。 但是,在深入研究细节之前,让我们首先了解开发可扩展Eclipse插件时的两个重要主题:扩展和扩展点。 使用简单的类比,您可以将扩展名视为插头,将扩展点视为插座。 每个扩展点都是唯一的,并定义了要遵守的合同。 例如,Eclipse附带了一个org.eclipse.ui.editors
扩展点(套接字),该扩展点允许您提供我们自己的编辑器(插件)。
在我们的案例中,我们将创建一个新的扩展,该扩展将有助于Eclipse工具栏。 为此,我们将为org.eclipse.ui.actionSets
扩展点使用一个模板(概念与创建插件所用的模板类似)。 在插件编辑器的“概述”页面中,在“ 扩展/扩展点内容”部分中选择“ 扩展”链接。 单击Add ...,并选择org.eclipse.ui.actionSets
模板(参见图6),其中填写了所有默认值。
我们插件的一个重要部分是它是自我描述的。 我们的插件必须描述的一件事是它为世界提供了什么。 在Eclipse的上下文中,这些称为导出包 。 在我们的插件中,我们要确定要导出的软件包,以便其他插件可以窥探这些软件包以查看它们是否依赖于我们的插件。 也可以将导出的软件包标记为内部软件包,这告诉插件开发人员我们不将所涉及的软件包视为API。 要指定导出的软件包,我们使用清单编辑器中的“运行时”页面。
在上一节中,我们描述了插件必须执行的操作才能向世界展示其功能。 假设您是一个不同的插件,并且想使用上述功能。 您将如何表达对此的兴趣? 在Eclipse的上下文中,这些称为依赖关系 。 在最简单的情况下,插件可以依赖于其他插件。 例如,如果要在Eclipse中构建自己的编辑器,则需要依赖org.eclipse.ui.editors
插件。 要指定依赖关系,您必须在插件编辑器的“ 依赖关系”页面上。
请注意,除了依赖单个插件之外,您还可以选择依赖于从插件导出的软件包(请参阅“依赖关系”页面上的“导入的软件包”部分)。 这是一个高级主题,当您不想将插件绑定到特定实现时很有用。 例如,假设提供XML解析器的包com.company.xml.parser
取决于。 现在,可以看到有两个插件,例如com.company.xml.parser.mobile
和com.company.xml.parser.desktop
,它们提供了同一XML解析器的两种不同实现,但适用于不同的环境。
“运行时和依赖项”页面只是MANIFEST.MF文件中主要指定内容的直观表示。 对于希望手动编辑此文件源的高级用户,PDE提供了一个源代码编辑器,该源代码编辑器为插件清单定义中的各种标头提供了代码完成功能。
插件冒险的下一步涉及测试和调试。 为了测试我们的插件,Eclipse和PDE具有自托管的概念。 自托管只是意味着我们能够使用工作区中当前正在使用的插件启动新的Eclipse,而无需实际导出或部署任何插件。 要启动新的Eclipse,您需要做的就是通过“概述”页面的“ 测试”部分启动另一个运行时工作台(请参见“概述”页面中的“ 启动Eclipse应用程序”链接)。 几秒钟后,您会注意到一个新的工作台弹出窗口,在工具栏中可以看到插件的示例操作。
要以调试方式启动自托管插件,只需单击“ 概述”页面“ 测试”部分中的“ 以调试方式启动Eclipse应用程序”链接。 要实际调试插件,您需要设置相关的断点。 如果您不熟悉Eclipse中的调试功能,建议您查阅developerWorks文章“使用Eclipse平台进行调试”以帮助您入门(请参阅参考资料 )。
要设置有关启动或调试插件的更多详细选项,请转到“启动配置”对话框,可以使用“ 运行”>“运行配置...”菜单选项来调用该对话框。 与您的插件相关的启动配置类型称为“ Eclipse应用程序”,因为我们启动的实际上是Eclipse应用程序(请参见图11)。 在启动配置中,可以设置诸如参数之类的内容,并控制使用哪个JRE启动应用程序。
插件开发的一个常见步骤是国际化。 一旦达到了有用的插件并且将由多方测试的程度,您就会经常收到请求,以确保您的插件能够以其他语言运行。 幸运的是,外部化与插件相关的字符串所需的工作量很少。 在PDE中,可以通过右键单击插件的“ 概述”页面并选择“ 外部化字符串...”菜单项来调用向导。 选择之后,将显示一个向导,该向导显示与外部化相关的所有字符串。
实际上,这只是为您的插件生成一个plugin.properties文件(包含外部化的字符串),并将Bundle-Localization
标头添加到您的MANIFEST.MF文件中。 Bundle-Localization
标头仅使您可以为外部化的字符串定义名称和可选位置。 在这种情况下, Bundle-Localization
是“插件”,表示各种语言环境的字符串都将位于plugin.properties(请参见图13),plugin_fr.properties或plugin_de.properties之类的文件中。 文件名中下划线后的任何内容都代表语言环境。
而已! 这就是开始国际化我们的插件所涉及的全部。 有关更多信息,我建议您从Eclipse角落阅读这些过时但仍然相关的文章:“如何使Eclipse插件国际化”和“如何测试国际化的Eclipse插件”(请参阅参考资料 )。
我们旅程的下一步是使用一些最佳实践来组织清单文件(即MANIFEST.MF和plugin.xml)。 PDE提供了一个方便的向导,可以通过“概述”页面的“ 导出”部分调用该向导。 启动向导后(参见图14),将为您提供可以调整的各种选项。 默认值非常合理,但是有某些选项,例如确保plugin.properties文件中没有杂散键,这非常有用。
总体而言,本文的任务是介绍插件开发的基础知识,并结合一些最佳实践。我们通过创建示例插件并通过典型的插件开发工作流程来实现这一点。 一旦了解了工作流程,便可以通过诸如“组织清单”向导之类的最佳实践来轻松开发插件,甚至更容易维护它们。 第2部分将重点介绍可用于开发富客户端应用程序的工具,并完成图1所示的其余插件开发工作流程。
翻译自: https://www.ibm.com/developerworks/opensource/library/os-eclipse-plugindev1/index.html
基本面投资