CSDN博客

img oicqren

如何驾驭 Eclipse 功能部件(三)

发表于2004/11/4 13:35:00  879人阅读

分类: 技术文章

组织功能部件

当您在开发您的工具时,您是否考虑到了需要多少个插件?答案是至少三个:一个是您的模型,也就是非 UI 的核心部分,一个是您的 UI 内容,还有一个或多个是用于提供帮助内容。如果您注意过,您会发现这是 Eclipse 本身的基本模式(jdt.core, jdt.ui, jdt.doc; debug.core, debug.ui;等等)。

这样划分的原因之一是,相对于不用于 UI 的插件来说,用于 UI 的插件在运行期需要不同的 Eclipse 组件的支持(org.eclipse.ui)。

包含其他功能部件

功能部件如果没有被其他功能部件包含,那么在 Eclipse 配置中都会被配置为根功能部件。默认情况下,根功能部件可以由用户在 Install/Update 透视图中禁用或启用,并且可以在 feature.xml 文件中确定一个更新 URL。当包含一个功能部件时,只有在根功能部件中的更新 URL 会被处理,否则只能通过 search-location 定义特别许可才可以。

通过包含功能部件,您可以管理包的组织结构。您可能会有多个功能部件,但只有一个做过标识,其余的或者是用来构成结构,或者是用来管理组件。请记住是根功能部件来定义更新的站点,尽管这个角色可以由功能部件委派给它所包含的功能部件,通过设置 search-location 属性值为 selfboth。

如果您正在构建一个基于 Eclipse 的产品,您可能希望您的一个功能部件来包含 Eclipse 功能部件树。对于标识这个产品来说这并不需要,但是您可以指定另外的更新站点(Eclipse 自己用的是 http://update.eclipse.org/updates),或者根本不指定更新站点,禁用基于 Web 的更新。

可选功能部件的角色

当将一个功能部件包含到另一个功能部件时,您可以选择是否把它设置为可选的。主要原因是创建这样的结构可以让用户根据他自己的需要来禁用您提供的组件的一部分。

当新的功能部件包含有可选功能部件,但那些可选功能部件并不存在时,Eclipse 的配置逻辑不允许添加这个新的功能部件。也就是说,如果适当的先决条件成立,可以使用可选功能部件来创建层结构。不过需要将这些层存贮在不同的目录树下,并且每层使用单独的链接文件。您可以添加到 Eclipse 配置以增加其功能的链接文件的没有数目上的限制。

让 Eclipse (或者任何基于 Eclipse 的产品)以您的方式工作

现在向您讲明了两点:指定的主要功能部件控制整个产品的标识和默认属性,Eclipse 可以在安装配置目录下或者任何一个链接的 Eclipse 目录结构下找到组件。这意味着您可以改变 Eclipse (存在相关风险,不过仅仅意味着您修改时需要小心!)。这些改变可以帮助您管理基于 Eclipse 的安装配置,并使之支持您个人所喜好的属性规则。

使用链接文件来管理 Eclipse 安装配置

您可能会希望能对环境进行更多的管理,而不是毫无选择地将所有的插件(我希望是引用到的功能部件)全部安装到您的 Eclipse 目录树下。如果您需要更新 Eclipse,实际上您并不想要另外再装一个新的 Eclipse 或者在列表中去查找您所想要的功能部件和插件。

下面是一种借助链接文件来组织您的 Eclipse 或者基于 Eclipse 的产品和构件的方法:

·保持 Eclipse 或者基于 Eclipse 的产品是干净的。也就是说,不要把您的任何功能部件或者插件添加到 eclipse/features 和 eclipse/plugins 目录下。

·在已有的 eclipse 目录下创建一个 eclipse/links 目录和一个 eclipse/links-out 目录。如果您用的是基于 Eclipse 的产品,那么可能已经存在 eclipse/links-out 目录。这个目录并不特殊,只是一个用来方便存放不用的链接文件的地方。

·为您要添加到您的配置中的功能部件和插件创建一个或多个 add-ons 的目录。在这些目录下,创建一个 eclipse/features 和一个 eclipse/plugins 目录结构。

·为每一个 add-ons 目录在 eclipse/links-out 目录下创建一个链接文件。将那些您当前要添加到您的活动配置中去的链接文件拷贝到 eclipse/links 目录。

例如,假定您将 Eclipse 解压缩到一个名为 Eclipse-2.1.1 的目录下,然后创建一个名为 CoolTools 的 add-ons 目录,也放在 Eclipse-2.1.1 目录下。在 CoolTools 目录下,您可以有多个目录,每个目录用于一个或一族您要添加到 Eclipse 的工具。您的目录结构可能会如图3所示。



图 3. Eclipse 的链接文件目录结构


EditorList.link 文件要包含下面其中一条(不能是全部)

path=D:/Eclipse-2.1.1/CoolTools/EditorList
path=D://Eclipse-2.1.1//CoolTools//EditorList


斜杠是一条(/)还是两条(//)取决于目录结构。确认条目不要以空格结尾,因为这样 Eclipse 会忽略它――我第一次用链接文件时用了好几个小时才弄明白这一点。

如果您使用一个新的工作区来启动 Eclipse,所有 Eclipse 自带的以及通过链接文件找到的功能部件和插件都是可用的。如果您要添加一个链接文件,并使用现有的工作区重新启动 Eclipse,Configuration Changes 对话框就会弹出。如果您删除了一个链接文件(很简单,只是把它移到 /links-out 目录下),配置的变化也会被 Eclipse 注意到,但您能看到的仅仅是 splash-flash。

实际上您不是必须将链接文件移入移出来控制配置,更好的办法是用 Install/Update 透视图来调整配置。当然,可以这样做的前提是您的插件都属于功能部件(看,这是另外一个需要功能部件的理由)。使用 Eclipse 进行配置的调整将以后面讨论。

使用 Install/Update 透视图来修改配置

根功能部件,以及任何定义为可选择的功能部件,都可以在当前配置中禁用。被禁用后,功能部件仍然可以被平台认出;它们只是不再包含在当前的运行期配置中。

前面我们谈及了将 Eclipse Examples 添加到活动配置中。添加后,我们可以使用 Install/Update 透视图来禁用它。如果您正打开一个包含有 Eclipse Examples 的 Eclipse 配置的 Install/Update 透视图,您看到的将如图4 所示。



图 4. 在 Install/Update 透视图中的 Eclipse Examples 功能部件


在 Preview 视图中点击 Disable Now 按钮,您就可以将 Eclipse Examples 功能部件从运行期配置中临时移除。点击后,Eclipse 将提示您重新启动平台来使配置的修改生效。

Eclipse Examples 功能部件在当前配置中将不再可见(或者说不是活动的)。为了能再次看到这个功能部件并启用之,您需要在 Install Configuration 视图中点击 Show Disabled Features 开关按钮(见图5)。



图 5. 在Install/Update 透视图中禁用 Eclipse Examples 功能部件


由于 Eclipse Examples 功能部件是一个根功能部件,所以可以这样做。如果您在 Eclipse SDK 中浏览其他功能部件,您将发现它们在 Preview 视图中没有相应的 Disable Now 按钮,这是因为它们被定义为必需的。

如果您用的是 Eclipse SDK,您应该会有默认配置的平台、JDT 和 PDE。如果您正在做一些插件的开发,但是您不需要 PDE——或者在一些情况下,您不是总需要 JDT——您只要对 Eclipse 做一个小的修改就可以禁用这些功能部件。打开 org.eclipse.platform.sdk.win32 功能部件的 feature.xml 文件,将以下几行修改为包含 optional="true" 属性。

清单 1. 禁用 PDE 和 JDT

<includes id="org.eclipse.platform.win32"
 version="2.1.1" match="equivalent"/> 
<includes id="org.eclipse.jdt" version="2.1.1" 
match="equivalent" optional="true"/> 
<includes id="org.eclipse.pde" version="2.1.0" 
match="equivalent" optional="true"/>
<includes id="org.eclipse.platform.win32.source" 
version="2.1.1" match="equivalent" 
   optional="true"/>
<includes id="org.eclipse.jdt.source" version="2.1.1" 
match="equivalent" optional="true"/>


现在您可以在 Install Configuration 视图中选择这些功能部件并禁用它们。如果所有前面提到那些定义为可选择的功能部件都被禁用,平台依然可以运行。并且,您随时可以重新启用它们。图6 是 Install Configuration 视图中显示的被禁用的功能部件。



图 6. 禁用 Eclipse 多个的功能部件


这些禁用/启用的设置都是仅对于当前工作区有效。您可以有另外的活动工作区,其中包含有部分或全部在当前工作区中被禁用的功能部件。这个简单的例子说明了使用功能部件的优势(它们可以被禁用)和使用链接文件来将所有可能的功能部件添加到您的配置的意义所在。在一个给定的工作区中将您所不需要的功能部件禁用,这样就可以优化当前配置。

定义自己的全局属性

Eclipse 是一个优秀的工具,但是同任何工具一样,您得对它进行定制,它才能是完美的。工具提供了属性页面来让您改变工具的行为或可视化显示。最新统计,在 Eclipse 中有 62 个属性页面。几乎每次您使用到一个新工具,您都会发现有些选项您想要修改。但是当您使用多个工作空间时,或者是在一个团队的环境中工作,有一些选项需要与他人协调,这样就出现了如何在跨工作空间以及与他人协调工作时对选项进行最佳管理的问题。

Eclipse 提供了导入/导出属性的功能。在任何一个属性对话框中,您都可以将属性导出到一个 .epf 文件中。当使用其他工作区或与他人共享时,可以再次导入这个文件。您甚至可以将它添加到工程中与团队成员共享,以便每个人都可以得到标准的属性。

但是这样做会变得单调而乏味,并且如果您忘记了就麻烦了。在使用 Eclipse 或任何基于 Eclipse 的产品时,您应该意识到还有另外一种方法可以定义全局属性。您可以通过修改主要功能部件的 plugin_customization.ini 文件来定制属性的默认值。

您可以在 eclipse 目录下的 install.ini 文件中找到主要功能部件。例如,在标准的 Eclipse 解压缩中的 install.ini 的内容如下:

清单 2. 标准的 Eclipse 解压缩中的 install.ini 的内容

# install.ini 
# java.io.Properties file (ISO 8859-1 with "/" escapes) 
# This file does not need to be translated.

# Required property "feature.default.id" 
contains the id of the primary feature 
# (the primary feature controls product branding, 
splash screens, and plug-in customization) 
feature.default.id=org.eclipse.platform

# Required property "feature.default.application" 
contains id of the core 
# application that gets control	
on startup. For products with a UI, this 
# is always org.eclipse.ui.workbench; 
for "headless" products, this is product-specific.
feature.default.application=org.eclipse.ui.workbench


feature.default.id=… 指定了默认的主要功能部件。要注意的是,通过在启动 Eclipse 时使用 -feature 选项,可以把其他功能部件声明为是主要的。

同大部分功能部件控制和标识一样,实际的工作都是在功能部件相关联的插件中完成的。对于 Eclipse来说,这是一个 id 与功能部件相同的插件,org.eclipse.platform 插件。如果您仔细查看这个作为主要功能部件标识的插件,您将发现一个名为 plugin_customization.ini 的文件。这个文件的内容与导出属性的文件类似。当 Eclipse 启动时会读取这个文件,并用来指定所有默认的属性值,而不是去使用插件本身定义的那些值。这就使得产品,或者说是您,可以改变插件的行为。默认的 plugin_customization.ini 文件的内容只有一条:

清单 3. 默认的 plugin_customization.ini 文件 

# plugin_customization.ini 
# sets default values for 
plug-in-specific preferences 
# keys are qualified by plug-in id 
# e.g.,	com.example.acmeplugin/myproperty=myvalue 
# java.io.Properties file 
      (ISO 8859-1 with "/" escapes) 
# "%key" are externalized strings 
defined in plugin_customization.properties 
# This file does not need to be translated.

# Property "org.eclipse.ui
    /defaultPerspectiveId" controls the 
# perspective that the workbench opens initially
org.eclipse.ui/defaultPerspectiveId
        =org.eclipse.ui.resourcePerspective


这一条目指定了打开新的工作区时以及当您关掉所有的透视图后关闭 Eclipse 时打开的透视图。如果您使用的基于 Eclipse 的产品,这个条目可能有所不同。

指定要包含的属性的过程比较费事,但至少您应该做如下步骤:

1.启动一个干净的工作区。

2.修改您想要改变的一个属性。

3.将属性导出到一个 .epf 文件。

4.在导出的文件中找到新的健值,并确定它是否反映了您刚刚所做的改变。

5.将一个或多个键的条目拷贝到标识插件(使用 Eclipse 时这个插件是 org.eclipse.platform)的 plugin_customization.ini 文件中。

6.测试结果,或者保留新的键,或者再试一次。

注意:如果您不习惯于去更新产品的 plugin_customization.ini 文件,您可以在其他位置创建一个这个文件的拷贝,在启动 Eclipse 或基于 Eclipse 的产品时使用参数来指定它。

eclipse -plugincustomization myCustomDefaults.ini

阅读全文
0 0

相关文章推荐

img
取 消
img