站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Eclipse 专题管理 Eclipse 环境

管理 Eclipse 环境

摘要: Eclipse 的持续发展意味着需要管理的项目和插件的数量一直在增长。为了跟上最新的 Eclipse 版本,这个管理过程会使开发人员感到灰心。对于新用户来说,项目、插件、工作区和安装的概念首先就可能使之感到畏缩。本文将介绍管理 Eclipse 环境的最佳实践。

管理插件

什么是插件?为什么我需要关心插件?

插件(plug-in,也称为 bundle)是 Eclipse 的功能块。在 Eclipse 中,所有的一切都有其相应的插件,这包括:

事实上,整个 Eclipse IDE 就是被构建为一个大的插件集合。其他基于 Eclipse 的产品,例如 IBM Rational® Software Architect,通过添加新插件增强了基本的 Eclipse。

一组相关的插件组成特性。特性和它们的插件存在于 Eclipse 程序目录中(在这个例子中,Eclipse 被安装在 /opt/eclipse 目录中)。下面是目录布局的一个示例:


清单 1. Eclipse 特性和插件目录结构
<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>


/opt/eclipse/
   features/
      org.eclipse.jdt_3.1.1/
         feature.xml
         ...
   plugins/
      org.eclipse.jdt.ui_3.1.1.jar
      ...
      
</td></tr></table>

Eclipse 可以有许多相同的插件,针对每个不同的版本有一个这样的插件。它知道如何解决插件依赖性、避免版本冲突,因此您永远不必担心同时安装两个 Subclipse 插件。

在长期使用 Eclipse 的过程中,您总是会通过下载第三方插件或是创建您自己的插件来增加新的功能。跨不同的 Eclipse 版本管理这些插件可能是个麻烦。因为插件存在于 Eclipse 程序目录中,所以如果您安装 Eclipse 的新版本,它们就会丢失。这意味着如果您有多个 Eclipse 安装,就必须保存大量插件的多个副本;甚至,在每次想要升级 Eclipse 时,您只能很麻烦地全部重新安装。

如果将插件存储于 Eclipse 程序目录以外的独立位置,当升级到 Eclipse 的新版本时,就不需要重新安装它们,而且,可以跨多个 Eclipse 版本共享插件。

实施控制:方法 1 —— 手动的文件系统扩展

有三种方法对插件实施控制。第一种方法是手动创建一个可以保存插件的目录(称之为产品扩展),将插件移到该目录,然后告诉 Eclipse 在这里寻找特性和插件。

在我们的例子中,我们会创建一个名为 /opt/eclipse-plugins 的位置用来存储插件。为了让 Eclipse 在这里存储插件,您必须首先创建如下的目录结构和文件:


清单 2. Eclipse 产品扩展目录结构
<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>


/opt/eclipse-plugins/
   eclipse/
      .eclipseextension
      features/
      plugins/
      
</td></tr></table>

注意,除了创建这些目录以外,您还必须在 eclipse 目录(在我们的例子中,是指 /opt/eclipse-plugins/eclipse)中创建一个名为 .eclipseextension 的文件。这个文件让 Eclipse 知道在这里可以找到扩展。它应该有如下内容:

<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>

id=org.eclipse.platform name=Eclipse Platform
version=3.1.1
</td></tr></table>

.eclipseextension 文件中的 version 属性应该设置为使用这个产品扩展的 Eclipse 的版本。该属性可以是特定的(3.1.1)、比较一般的(3.0.0)或者非常一般的(1.0.0)。在撰写本文时,版本号似乎对产品扩展的功能并没有任何影响。

注意,如果您使用的是 Windows®,则无法通过 Explorer shell 创建 .eclipseextension 文件。通过打开 NotePad,输入文件的内容,并将其保存为 .eclipseextension(确保文件类型选中为 “所有文件”,否则 Notepad 将会在文件名后添加 .txt),可以创建这样的文件。

下一件事是将这个插件位置告诉 Eclipse,以便它知道以后在这里寻找插件。选择 Help > Software Updates > Manager Configuration 得到 Product Configuration Manager,在这里完成这项工作。

使用 Product Configuration Manager,您可以添加新的 Eclipse 扩展。为了启用上面创建的扩展(/opt/eclipse-plugins),我们需要将它作为一个扩展位置添加。每一个人都已经有一个扩展位置,那就是 Eclipse 安装中的插件文件夹。在 Eclipse Platform 上右击,选择 Add > Extension Location 就可以添加另一个扩展。




一旦您已经选中了插件所在的目录,插件就会显示在产品扩展的列表中。在这里,您可以检验插件是否已找到。




Product Configuration 屏幕好的方面是,您可以很容易地禁用整个插件位置 —— 这在进行插件开发和测试不同配置时很有用。

实施控制:方法 2 —— 通过 Configuration Manager 添加产品扩展

不必在文件系统中创建文件夹和 .eclipseextension 文件,您可以让 Eclipse 为您创建产品扩展。

您可以在 Update Manager(Help > Software Updates > Find and Install)中创建新的产品扩展。在安装新的插件时,Eclipse 最终会提示您所要安装的位置。在这里,您可以单击 Change Location 以选择一个产品扩展。




选择 Add Location。当您选定一个目录时,Eclipse 将在那里为您创建一个产品扩展。




当您以后安装插件时,确保它们是被安装到您所想要的插件扩展地点(参见图 3 中的 Install Location 区域)

实施控制:方法 3 —— 创建管理产品扩展的 links 文件夹

如果在您的文件系统中已经有了产品扩展,例如我们在 方法 1 中创建的那个,那么您可以在 Eclipse 程序目录中创建一些简单的文件,告知 Eclipse 需要检查这些目录以寻找插件。

首先,在 Eclipse 安装文件夹(例如 /opt/eclipse)中创建一个名为 links 的目录。在这个目录中,您可以创建 *.link 文件(例如 emfPlugins.link)。每一个链接文件指向一个产品扩展位置。Eclipse 会在启动时扫描这个 links 文件夹,并在每个链接文件中所指向的产品扩展中寻找插件。下面是一个使用 links 文件夹的 Eclipse 安装布局的例子:


清单 3. 使用 links 文件夹的 Eclipse 安装布局
<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>


/opt/eclipse/
     links/
          emfPlugins.link
          webtools.link
          updateManager.link
          ...
     ...
     
</td></tr></table>

链接文件的内容看上去应该像下面这样:

<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>

path=/opt/plugins/emf/
</td></tr></table>
<table align="right" border="0" cellspacing="0" cellpadding="0" width="40%"><tr><td width="10"></td><td><table border="1" cellspacing="0" cellpadding="5" width="100%"><tr><td bgcolor="#eeeeee">Windows
在本文中,我们着重介绍 Eclipse 的 Linux® 安装。所有提供的示例清单对于 Windows 都是有效的。您仅仅需要将路径替换为相应的 windows 路径。另外请注意,在 Windows 中,路径中需要使用双反斜杠(例如 path=c:\\plugins\\emf)。 </td></tr></table></td></tr></table>

/opt/plugins/emf/ 有一个 Eclipse 产品扩展的目录结构,如 清单 1 所示。

这个方法的优势在于,所有的插件位置被作为一个文件夹中的文本文件来存储。这意味着您可以通过简单地将 links 文件夹复制到新的 Eclipse 安装中,来升级 Eclipse 并使其指向您的产品扩展文件夹。您也可以通过从每个 Eclipse 安装建立一个到 links 文件夹的符号链接,获得一个针对所有 Eclipse 安装的公用 links 文件夹(如果您的文件系统支持符号链接)。


<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>

管理 Eclipse 工作区

在 Eclipse 中,工作区的概念被简单地描述成可以通过插件访问的资源的容器。工作区是终端用户和 Eclipse 平台之间交互的枢纽。终端用户能够在工作区中创建项目并处理其中的内容。工作区本身作为一个目录存在于文件系统中,并且只局限于每个 Eclipse 实例使用一个。工作区还包含一个 .metadata 目录,用来持久存储诸如插件状态这样的私有信息。

为什么我需要多个 Eclipse 工作区?

简单的答案是为了性能。工作区中的项目越多,达到开发系统所能处理项目的临界点的机会就越大。为了解决这个问题,您可以通过 -data 参数划分 Eclipse 工作区,这个参数被传递给 Eclipse 可执行文件(例如 /opt/eclipse/eclipse):


清单 4. 指定不同的工作区
<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>


/opt/eclipse-3.1/eclipse -data /opt/workspaces/web
/opt/eclipse-3.2M2/eclipse -data /opt/workspaces/web
/opt/eclipse-3.2M2/eclipse -data /opt/workspaces/dev -vmargs -Xmx512m
</td></tr></table>
<table align="right" border="0" cellspacing="0" cellpadding="0" width="40%"><tr><td width="10"></td><td><table border="1" cellspacing="0" cellpadding="5" width="100%"><tr><td bgcolor="#eeeeee"> 工作区提示
您可以通过向 Eclipse 可执行文件传递 -showlocation 参数来显示工作区位置。此外,您还可以通过 -vmargs -XmsXmx 参数为不同的工作区指定不同的性能特征。 </td></tr></table></td></tr></table>

您也可以通过从 Eclipse 中选择 File > Switch Workspace 切换工作区,而不必重新启动 Eclipse。

还有一种可能的情况是,您有一个 “研究” 工作区。在这个工作区中,您需要使用 Open Type(Ctrl+Shift+T)等由 Eclipse 对载入的大代码库的代码仔细搜寻一遍。如果您试图学习一些例子,或者您曾经想知道一个开放源码项目是如何处理特定问题的,那么这种方法是极其有用的。

有多个工作区的不利方面在于需要在它们之间共享开发首选项。因为首选项被持久存储在 Eclipse 中的一个工作区中,所以您必须导出工作区的首选项并将它们导入您所要求的工作区中(File > Export > Preferences)。


<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>

管理 Eclipse 安装

为什么我需要多个 Eclipse 安装?

如果您使用多个基于 Eclipse 的产品,就必然需要多个 Eclipse 安装。例如,如果您使用基本的 Eclipse V3.1 来完成日常的 Java™ 语言编程,并使用带有 WebTool 的 Eclipse 来编写 IBM WebSphere® 应用程序,那么您就有两个完全独立的 Eclipse 安装。在这些基于 Eclipse 的产品之间共享插件和工作区可以节约时间,并避免一些升级带来的麻烦。

您在开发 Eclipse 的插件时也需要多个 Eclipse 安装。当有了多个 Eclipse 安装时,您可以跨不同的 Eclipse 版本测试您的插件的功能。您也可以将一组不同的插件对应不同的 Eclipse 安装,以便跨多个环境配置测试您的插件。

注意,通过在 Eclipse 中选择 Help > Software Updates > Manage Configuration,来考察 Eclipse IDE(它启用和禁用属于这些特性的插件)中的特性,可以管理哪些插件由 Eclipse 使用。在开发自己的插件时,您也可以通过 Run Configuration Manager 来管理运行 Eclipse 测试实例时哪些插件被启用。我们通常的经验是,使用多个 Eclipse 安装是管理多个 Eclipse 版本和配置最方便且最便于重用的方法,对于测试目的尤其如此。

多个 Eclipse 安装

Eclipse 安装独立存在于它们自己的文件夹中。要使得多个安装并存,只要下载您所要的 Eclipse 产品和版本并将其解压到它们自己的目录中即可。下面是一个用来跨不同 Eclipse 版本测试插件的示例布局:

<table bgcolor="#eeeeee" width="100%" cellpadding="5" cellspacing="0" border="1"><tr><td>

/opt/eclipse-3.0
/opt/eclipse-3.1
/opt/eclipse-3.2-m1
</td></tr></table>

对于节约所有当前安装的插件安装时间和避免工作区重复,尽可能地跨 Eclipse 安装进行共享是一个好主意。正如我们前面所讲述的,您可以共享以下内容:

注意,跨 Eclipse 安装共享工作区和首选项可能会有问题,尤其是当 Eclipse 版本的主编号不同时(例如 3.1 和 3.2)。


<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>

结束语

我们的目的有两个:初步介绍 Eclipse 的基本工作要素,比如插件、项目和工作区;告诉您管理多个 Eclipse 环境的好处以及一些不利方面。我们希望您能够接受这些知识并将其应用到您的实践中以节约 Eclipse 维护的时间。


<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>


<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>

作者简介<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="3"></td></tr><tr align="left" valign="top"><td></td><td></td><td width="100%">

Chris Aniszczyk 是 IBM (Tivoli Security) 的软件工程师,已完成 IBM 的 Extreme Blue 实习。他是一个开放源码的爱好者,致力于 Gentoo Linux (http://www.gentoo.org) 发行版的工作,同时他还是 Eclipse Modeling Framework Technology (EMFT) 项目的提交者。

</td></tr></table>
<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="3"></td></tr><tr align="left" valign="top"><td></td><td></td><td width="100%">

Phil Crosby 是 Maryland 大学 Park 学院的一名大学生。他在 Microsoft 的 Visual Studio 团队中实习,他也曾经在 IBM 的 Extreme Blue 实习。他目前致力于手写输入用户界面的研究,喜欢在单台 Linux 机器上编写 .NET GNOME 桌面应用程序。

</td></tr></table>

<table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td>
</td></tr></table><table class="no-print" cellspacing="0" cellpadding="0" align="right"><tr align="right"><td>
<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="middle">
</td><td valign="top" align="right"></td></tr></table></td></tr></table>


↑返回目录
前一篇: 发现 Eclipse 中未解析的插件依赖性
后一篇: 用 Runtime Spy 调整 Eclipse 的启动性能,第 1 部分