本如果市场上的开发工具不能满足您的需要,而自己开发 IDE 又不太现实,那本文就是您所需要的,它介绍了如何扩展 eclipse JDT 来辅助规范你的项目开发流程和帮助约束你的代码规范。
<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
你的小组的人员是否不按照你制订的开发流程和代码规范来开发? 你的小组的成员经常变化,经常要对新手讲述什么是 Struts,什么是MVC? 已有的开发工具的功能不能满足你的需要?
如果你遇到上述问题,请看看本文,虽然它不一定能解决好你的问题,但至少它回给你一定的启发的。本文从实际案例触发,深入浅出,图文并茂向您描述了如何利用 Eclipse 平台规范你小组的开发流程,并且帮助新手快速融入开发中。
阅读本文,最好具有 J2EE 开发、Eclipse 平台和插件开发、Eclipse 平台 JDT 插件扩展和 Struts 相关知识。
|
|
Eclipse 虽然是一个开源的平台,但是现如今其功能功能已经不输给任何开发工具,借助 eclipse 自带的 JDT 和各种第三方的插件,Eclipse 成为最流行的开发工具之一。
Eclipse 已经拥有软件开发,测试,文档,协作等能力,它已经能融入软件开发的整个流程中了。
让我们从一个实际的案例例谈起,看看我们是如何扩展 Eclipse 来辅助和规范我们的开发工作的。这是一个电力公司销售分析系统,里面有众多的各种各样的分析主题,例如要分析一个电力公司的销售情况,用户可以选择时间范围来分析公司的销售情况,如下图所示:
我们的小组在开发一个主题的流程大致是这样的:
编写扩展 JDT 的插件辅助开发流程
我们的开发流程从本质上来说,还是和上面一样,但是由于我们使用了 wizards 和扩展了 JDT 来辅助我们完成工作,那么实际开发者的开发流程会简化了,如下:
核心是扩展了 JDT 插件,把开发的流程集中在一个 Wizard 完成。
首先,让我们看看实际的效果,然后再深入说明和讲解。
1.在 eclipse 平台中单击开始->新建->J2EE 开发包->开发新的分析主题菜单。
如下图所示:
2.首先显示的是生成 Action 类的界面,它扩展了 JDT 插件的功能来允许程序员的输入客户容许的查询条件,而且它已经把父类设定为了可以看到父类 org.apache.struts.action.Action,这是 Struts 的要求.这再后面是用来自动生成 FormBean,和 Jsp 表单用的。
3.单击next,在这里输入SQL,并且可以直接测试。参数用?代替。小组成员可以直接在这里直接编写,测试SQL,再最后会自动生成Java代码。
4.如果没有错误,单击 finish 按钮。会自动生成 Jsp,Action 的骨架和基本功能代码。自动生成的 Jsp 表单,自动生成的 Action 和自动生成的现实查询结果的 Jsp。由于这里各个项目完全不同,建立都使用模板引擎这样随时修改模板就不用修改为 Java 代码了。
大体的结构如下,有两个 jsp,一个 anction:
5.根据实际情况修改骨架,运行,并且测试一下效果。
|
|
1.首先是如何开发 Eclipse 中的 Wizard 。
这里我不从头介绍如何开发 Wizard,如果您对如何开发 Wizard 尚且一无所知,请参考 Eclipse.org 上来自 Doina Klinger 的文章: http://www.eclipse.org/articles/Article-JFace%20Wizards/wizardArticle.html ,此文 Step by Stey 的介绍了如何创建 Eclipse 的 wizard,和各种细节知识。
首先,看看我们插件的 plugin.xml 文件:
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin> <extension point="org.eclipse.ui.newWizards"> <category name="北京能博译码J2EE开发包" id="net.sf.yangtze.pdpf"/> <wizard class="net.sf.yangtze.pdpf.wizards.NewSubjectWizard" icon="icons/sample.gif" category="net.sf.yangtze.pdpf" name="开发新的分析主题" id="net.sf.yangtze.pdpf.wizards.NewSubjectWizard"/> </extension> </plugin> |
实现它的类 net.sf.yangtze.pdpf.wizards.NewSubjectWizard 继承自 org.eclipse.jface.wizard.Wizard 类,它有几个重要的方法:
addPage - 向 Wizard 添加页面,就是那些可以通过 next>,<back 浏览的页面。
FinishPage - 当用户点击 finish 的时候程序完成的工作。在我们的插件中就是完成自动生成 jsp,Action 的工作,把这些代码放在FinishPage 方法即可。
我们有两个 Page 一个用来输入和测试 SQL 语句,一个用来定制 Action 和可以输入的参数。
2.然后是如何从 JDT 扩展。
这部分现成资料不多,所以要稍微探讨一下。经常使用 Eclipse 开发 java 的程序员应该非常熟悉 JDT,实际上 Eclipse 平台可以用来开发任何语言的,它并不是一个 Java IDE,Java IDE 的功能是通过 JDT 插件完成的,在 Eclipse 的世界中一切都是插件。
在开发 Java 的时候,有许多的 Wizard 来辅助我们完成编码工作,如新建类,接口,如下图:
而且它里面有很多辅助工作,如你点击超类的时候,有一个帮助你输入超类名称的窗口会弹出来,在里面你并不需要输入类的完整的名称,它会自动提示。接口和包都有类似的辅助输入的功能。
我使用这些功能觉得很方便和习惯,所以我希望我的插件在创建 Action 的时候也能有类似的功能,而我不想自己再重新造个轮子(而且这个工作可不轻松),所以我就得从 JDT 中扩展,而不使用标准的 org.eclipse.jface.wizard.Wizard 类。
在传统的 wizard 中我们使用 org.eclipse.jface.wizard.Wizard 和 org.eclipse.jface.wizard.WizardPage 类,但如果你希望继承 JDT 的功能必须对应使用 org.eclipse.jdt.internal.ui.wizards.NewElementWizard 和 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 类。
NewElementWizard 也是继承自 Wizard,它只是做了一些检查是不是 Java 项目等工作,Eclipse 中新建类,和接口 Wizard 都是从这个类基础发展而来的。内容丰富的是 org.eclipse.jdt.ui.wizards.NewTypeWizardPage 类,它包含了浏览项目,浏览超类,接口等功能,而且提供了丰富的方法来构建你的 Java 类型,例如添加方法,添加 import 等,更多内容可以参考自带的 API doc 文件,一幕了然。
可以看看我上面插件中的例子:
public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, 0); int nColumns = 4; GridLayout layout = new GridLayout(); layout.numColumns = nColumns; composite.setLayout(layout); //上图中的 source folder 控件 createContainerControls(composite, nColumns); //Package createPackageControls(composite, nColumns); //一个分割线 createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); createModifierControls(composite, nColumns); //父类的选择控件 createSuperClassControls(composite, nColumns); //接口选择控件 createSuperInterfacesControls(composite, nColumns); // createSeparator(composite, nColumns); //我们扩展的控件 creatStrutsControls(composite, nColumns); setSuperClass("org.apache.struts.action.Action", true); setControl(composite); } |
|
|
Eclipse 的强大在于它容许插件扩展其它插件,利用 JDT 你完全可以开发出一个符合自己要求的快速开发工具,而并不需要非常多的代码。有兴趣的读者可以参考看一下 Lomboz 项目,一个为 Eclipse 开发 J2EE 的插件,它的功能强大,但实际它的代码却并不多。
扩展 Eclipse 完全可以构建属于你自己的快速开发工具,它可以显著的提高工作效率。而且任何一个新手都可以快速上手,你的知识被整个项目组成员共享,这减少了 Java 所被诟病的复杂。就我的例子来说在我的项目组中,新员工,只需要基本的 Java 和 SQL 知识,根本不用去从头学习 Struts,MVC,他们可以有更多的时间为用户开发更多的功能,而不需要为工具,框架所困扰。 希望本文能起到抛砖引玉的作用,更多的国内开发人员能融入的 Eclipse 的世界中来。