Eclipse 平台、Eclipse 插件及 Eclipse Rich Client Platform 技术在业界已经得到了非常广泛的应用,使用 Eclipse 技术构建的工具,产品无论在开发人员的日常工作,抑或大型企业的生产运作上都发挥了巨大的作用。而和每个具有完备流程的软件工程一样,一个优秀的 Eclipse 插件 RCP 项目也缺少不了自动构建这一环。本文详细地介绍了 Eclipse 插件 RCP 项目的自动化构建的过程。
构建( build )在软件工程中是指将源文件及资源编译、打包成可在计算机上运行的软件。而自动化构建在软件行业已有非常悠久的历史,我们平时用的 Make 脚本, Ant 脚本都是常见的自动化构建的应用。而 Eclipse 插件系统的核心模块 PDE 同样也提供了完整的面向 Ant 的自动构建体系来编译和打包 Eclipse 插件 RCP 项目以用于发布。
在下面的部分中,详细讲述了进行 Eclipse 自动化构建的方法。文中示例适用于 Eclipse 3.2 和3.3。
|
使用 Eclipse 工作平台导出 Eclipse 插件项目
Eclipse 平台提供了最简易的手动导出方式,您可以在 Eclipse IDE 的菜单中中选择 File->Export 命令,在弹出对话框中选择 Plug-in Development->Deployable features 导出 Eclipse plug-in feature 或选择 Deployable plug-ins and fragments 导出 Eclipse plug-in 或 fragment :
图 1. 导出 Feature 项目
在本例中,我们选择了导出一个 Eclipse plug-in feature ,在选择 Next 以后您可以看到如下的页面:
图 2. 选择项目和路径
在此页面中,您的 Eclipse 工作台中现存的 Eclipse Feature 项目将被列出于 Available Features 的选项之中。
在我们的例子中已有项目为 org.eclipse.test ,如果您的 Workbench 中存在其他 Feature 项目,也会被相应地列出。此后,您可以在 Directory或者 Archive file 中选择将此 Feature 项目导出为文件夹或压缩文件。
点选 Finish , Eclipse 将自动导出 org.eclipse.test 项目并打包为 C:org.eclipse.test.zip 文件。
图 3. 导出项目的结构
可以看到, Eclipse 平台提供的一键式导出非常方便,已经可以满足普通插件开发者的需要。但它的可配置项较少,缺少自动加入版本号,时间戳等功能。而对于一个大型的项目,往往涉及多个模块联合编译构建;部分项目需要定期构建(例如 nightly build ),往往需要一个定时脚本在无人干预的情况下自动进行构建。此时 Eclipse 平台的手工一键导出已经不能完成这些要求,必须通过脚本的方式运行。为此 Eclipse 系统也提供了另一种基于 Ant 脚本的构建方式—— PDE headless-build ,我们在下面将详细讲述。
|
PDE (Plug-in Development Environment) headless-build 是一种基于 Ant 脚本的构建方式,它主要适用于 Eclipse plug-in 与 Eclipse RCP 项目的导出。
在您开始 headless-build 之前需要安装如下软件:
- Eclipse SDK (必需)
- Ant (可选,在命令行模式中必须)
- CVS (可选,在自动获取 CVS 源控制的项目中必须)
由于 headless-build 是特定于 Eclipse 插件的构建平台,而 Eclipse 插件的编译构建都离不开Eclipse 本身的类库与资源,因而运行 headless-build 之前,您必须已经安装好带有 PDE 环境的 Eclipse SDK 。同时,如果您需要在纯命令行模式中启动构建或者其他必须使用外部 Ant 启动的模式,那您还必须安装 Ant 程序。
最后如果您的项目存储于 CVS 源控制中, headless-build 也提供了自动获取 CVS 源控制中代码和资源的功能。而在使用此项功能之前您必须安装有 CVS 客户端,并确保 cvs 命令已在环境变量中被定义。
由于 headless-build 必须基于 Eclipse 环境,因而我们必须通过启动 Eclipse 中相应的 application 来完成 build 过程。以下是一条简单的 build 启动命令。
java -jar plugins/org.eclipse.equinox.launcher_1.0.0.v20070606.jar -application org.eclipse.ant.core.antRunner -buildfile E:softeclipse330pluginsorg.eclipse.pde.build_3.3.0.v20070612scriptsbuild.xml –Dbuilder=”C:Documents and SettingsYiTingworkspace33pluginBuildExamplecfg” |
这条命令和平时我们使用 java 命令启动 Eclipse IDE 环境类似,但是它的启动参数 –application 设置为 org.eclipse.ant.core.antRunner ,这将启动 Eclipse 的内置 Ant 运行器,而之后的参数 -buildfile build.xml 则类似于通常 Ant 启动参数中的脚本参数,指定了将被运行的 Ant 脚本。
在启动命令中,我们也可以设置 –D 参数,例如使用 –DbuildLabel 可更改最终构建完成的插件的后缀, -DcompilerArg 可设置编译 plug-in 中 Java 代码的编译参数,但通常情况下我们不必在启动参数中设置所有的可配置参数,因为 headless-build 已为此提供了一组基于 properties 和 xml 的配置文件:
allElements.xml
用于设定哪些 feature 或 plug-in 项目将会被 build 。 allElements.xml 的文件内容往往较为简单例如:
<project name="allElements Delegator">
<target name="allElementsDelegator">
<ant antfile="${genericTargets}" target="${target}">
<property name="type" value="feature" />
<property name="id" value="org.eclipse.test" />
</ant>
</target>
<target name="assemble.org.eclipse.test">
<ant antfile="${assembleScriptName}" dir="${buildDirectory}"/>
</target>
</project>
|
在此样例中第一个 target 项指定了名为 org.eclipse.test 的 feature 项目将会被 build 。而第二个 target 则允许用户对不同环境下的插件设置不同的参数,例如:
<target name="assemble.org.eclipse.pde.build.container.feature.linux.motif.x86">
<ant antfile="${assembleScriptName}" dir="${buildDirectory}">
<property name="archiveName" value="${archiveNamePrefix}-linux.motif.x86.zip"/>
</ant>
</target>
|
设定了 build 结果中应用于 linux motif x86 环境的 plug-in 的输出将以 linux.motif.x86.zip 为后缀。
build.properties
定义了大量的控制参数,用户可以通过改变此些参数控制整个 build 流程中7个方面的具体细节:基本设置,基础控制,输出控制,签名和 JNLP 控制,版本控制,获取源码控制,编译控制。每个部分中参数的具体含义可以参考 PDE 文档(参考1)。表 1. build.properties 中的常用参数

RSS订阅




