摘 要
孔子云:工欲善其事,必先利其器。作为开发人员,我们致力于为最终用户实现工作流程自动化;然而,许多开发人员却疏忽了将自己的开发流程自动化。企业级应用系统涉及到开发、测试、部署、实施等一系列开发流程,在整个软件开发过程中我们如何借助工具、方法和模式使过程简单自动化,减少一些低效繁琐的开发工作量呢?
本系列文章试图使用一系列的工具的介绍及使用帮助大家在日常工作中减轻繁杂低效的开发工作,借助于现有的一系列工具提升大家的开发效率,使大家日常工作做到事半功倍。
本文作为该系列的第一章,首先介绍大家日常开发工作中的IDE-Eclipse,通过Eclipse及其插件带领大家领略工具给工作带来的便捷之处。
一、Eclipse
1.1 Eclipse简介
Eclipse是著名的跨平台的自由集成开发环境(IDE)。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。目前Eclipse最新版本分为3.7和4.2版本。
Eclipse的基础是富客户机平台(Rich Client Platform, 即RCP)。RCP包括下列组件:
核心平台(启动Eclipse,运行插件)
OSGi(标准集束框架)
SWT(可移植构件工具包)
JFace(文件缓冲,文本处理,文本编辑器)
Eclipse工作台(即Workbench ,包含视图(views)、编辑器(editors)、视角(perspectives)、和向导(wizards))
Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。
Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他 言。已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API (SWT/Jface),Java开发环境插件(JDT),插件开发环境(PDE)等。
1.2 定制化配置
通过对Eclipse做一些定制化的个性设置,可以达到快速开发应用的效果。
设置行号、背景等信息
设置保存时执行指定操作
通过片段视图快速构建常用代码模板,具体使用可以参见代码片段snippets的使用与维护
快速内容辅助功能设置可以参考[Eclipse]自动内容辅助提示
更多定制化因为篇幅的原因这里就不一一介绍了。
二、常用插件介绍
插件安装方式:
1.eclipse插件可以直接拷贝安装在%ECLIPSE_HOME%/plugins目录下
2.Eclipse3.2以前的版本,通过在eclipse安装目录中建立一个子目录links,在links目录中建立一个link文件,比如 LanguagePackFeature.link,修改文件内容为path=D:/easyexplore,即这个link文件要对应一个刚解压后的插件目录。
3.Eclipse3.3及以后版本,将系统插件放置到%ECLIPSE_HOME%/dropins目录
插件目录结构如下:
1.%ECLIPSE_HOME%\dropins\插件名称\eclipse\plugins\xxx.jar
2.%ECLIPSE_HOME%\dropins\插件名称\eclipse\plugins\xxx\xxx.jar
1.1. babel
Eclipse语言转化插件,提供简体中文版。插件下载地址:http://www.eclipse.org/babel/downloads.php
1.2. easyexplore
快速浏览资源插件,通过在资源上使用右键功能对资源进行快速打开操作。
通过在资源上使用右键功能对资源进行快速打开操作
打开方式设置
1.打开文件、快速文件夹视图
explorer.exe /n,/select,{0}
2.打开资源管理器
explorer.exe /e,/n,/select,{0}
1.3. Jadclipse
Java反编译插件
设置Jad.exe文件路径
设置.class打开方式为JadClipse Class File Viewer
1.4. log4e
帮助你在你的Java工程中快速加入日志,而且Log4e可以帮助你把System.out.println转成日志的输出,非常方便,还可以瞬间移除代码中的日志代码,无需我们一个一个找到然后再删除。
Log4E设置
1.5. propedit
属性文件编辑插件
编辑java的属性文件,并可以自动存盘为Unicode格式
三、插件开发
在本节我将通过自定义插件增量文件设置increment工具来介绍如何开发自定义的Eclipse插件功能。
首先我们先介绍下这款插件的功能,increment插件将通过在Eclipse的资源管理器中添加一个右键菜单来快速将文件或目录的绝对路径快速输出到指定文件中,以便我们结合增量包打包工具快速制作修改文件增量包。
插件的具体设置与使用:
设置增量文件路径
快速添加文件或目录的绝对路径到指定的增量文件中
通过增量文件管理器视图快速制作增量包
通过increment插件与增量打包工具的结合使用,我们可以快速的在IDE中制作系统增量包,increment插件的具体使用可以参考生产系统产品部的技术BBS,这里就不再做过多赘述。
下面我们介绍下如何在Eclipse中开发这么一款功能插件结合现有的增量打包工具以便快速记录增量包文件路径。
首先新建一个Eclipse插件项目:
指定插件项目的名称:
指定插件的唯一标识、版本号、名称、提供商(comtop)和激活器:
选择指定类型的模版创建不同扩展点功能类型的插件:我们的increment选择为一个简单的具有视图的插件即可。
指定应用各种插件扩展点:不同的扩展点拥有不同的功能
插件项目创建完成之后,我们可以打开项目的plugin.xml进行编辑,下面是我创建的插件increment提供的配置和扩展点:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin id="com.comtop.increment" name="Increment Plugin" version="1.0.0" provider-name="zhouzhenxing"
class="com.comtop.increment.IncrementPlugin">
<runtime>
<library name="increment.jar" />
</runtime>
<!-- 依赖插件包 -->
<requires>
<import plugin="org.eclipse.core.runtime.compatibility" />
<import plugin="org.eclipse.ui.ide" />
<import plugin="org.eclipse.ui.views" />
<import plugin="org.eclipse.jface.text" />
<import plugin="org.eclipse.ui.workbench.texteditor" />
<import plugin="org.eclipse.ui.editors" />
<import plugin="org.eclipse.core.resources" />
<import plugin="org.eclipse.ui" />
<import plugin="org.eclipse.jdt.core" />
<import plugin="org.eclipse.jdt.ui" />
<import plugin="org.eclipse.text" />
</requires>
<!--右键菜单-->
<extension point="org.eclipse.ui.popupMenus">
<objectContribution objectClass="org.eclipse.core.runtime.IAdaptable" id="increment.contribution">
<action label="添加到增量文件列表中..." icon="icons/favoriteMenu.gif"
class="com.comtop.increment.popup.actions.IncrementAddAction" menubarPath="additions" enablesFor="1"
id="com.comtop.increment.popup.actions.IncrementAddAction">
</action>
</objectContribution>
</extension>
<!--视图-->
<extension point="org.eclipse.ui.views">
<!--新建视图目录-->
<category id="IncrementFilePlugin" name="Comtop插件"></category>
<!--常规视图目录:org.eclipse.ui-->
<view category="IncrementFilePlugin" class="com.comtop.increment.views.IncrementView" icon="icons/list.gif"
id="com.comtop.increment.views.IncrementView" name="增量文件管理器">
</view>
</extension>
<!--透视图视图-->
<extension point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension targetID="org.eclipse.ui.resourcePerspective">
<view id="com.comtop.increment.views.IncrementView" ratio="0.5" relationship="right"
relative="org.eclipse.ui.views.TaskList">
</view>
</perspectiveExtension>
</extension>
<!--首选项设置-->
<extension point="org.eclipse.ui.preferencePages">
<page name="我的插件设置" class="com.comtop.increment.preferences.RootPreferencePage" id="com.comtop.increment.preferences.RootPreferencePage"></page>
<page category="com.comtop.increment.preferences.RootPreferencePage" name="增量设置" id="com.comtop.increment.preferences.IncrementPreferencePage" class="com.comtop.increment.preferences.IncrementPreferencePage"/>
<page category="com.comtop.increment.preferences.RootPreferencePage" name="FieldEditor组件" id="com.comtop.increment.preferences.TestPreferencePage" class="com.comtop.increment.preferences.TestPreferencePage"/>
</extension>
<!--为首选项提供默认值-->
<extension
point="org.eclipse.core.runtime.preferences">
<initializer
class="com.comtop.increment.preferences.PreferenceInitializer" />
</extension>
<!-- 工具栏 -->
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="increment-DeployTools"
visible="true"
id="com.comtop.increment.actions.deploytools">
<action
id="com.comtop.increment.webbrowser.action.open"
toolbarPath="Normal/debug"
label="浏览器"
tooltip="打开浏览器"
icon="icons/google.gif" class="com.comtop.increment.toolbar.actions.OpenWebBrowserAction">
</action>
</actionSet>
</extension>
</plugin>
其中com.comtop.increment.IncrementPlugin为激活器,继承自
org.eclipse.ui.plugin.AbstractUIPlugin;com.comtop.increment.views.IncrementView为视图
org.eclipse.ui.part.ViewPart的实现;com.comtop.increment.popup.actions.IncrementAddAction作为右键菜单的实现,其他不同扩展功能通过实现不同的扩展点接口来达到目的。
Increment插件的详细实现源码请参考生产系统产品部技术BBS http://10.10.20.54:9999/jforum/redirect.php?goto=findpost&ptid=3090&pid=3206
四、参考资料
1.Eclipse官方网站 http://www.eclipse.org/
生产系统产品部技术BBS http://10.10.20.54:9999/jforum/index.php