J2ME之家

匿名投稿 投稿指南 RSS订阅 J2ME通告:
搜索: 您的位置主页>Eclipse>

Eclipse 插件项目的自动化集成与构建

2008-7-23 21:47:44 来源: 责任编辑: 【 点击: 我要投稿 [进入论坛]

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 项目
导出 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 headless-build 基础

PDE (Plug-in Development Environment) headless-build 是一种基于 Ant 脚本的构建方式,它主要适用于 Eclipse plug-in 与 Eclipse RCP 项目的导出。

headless-build 所需安装的软件

在您开始 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 的启动和配置

由于 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 中的常用参数

Tag:集成 构建 自动化 目的 插件 " < Eclipse build
责任编辑:
  • 用户名: (新注册)密码: 匿名:  请文明参与讨论,禁止漫骂攻击。
    评论总数: [ 查看全部 ] 网友评论
    关于我们 - 在线帮助 - 网站动态 - 版权声明 - RSS订阅 - 网站地图 - 返回顶部