别忘了在RCP App中配置自己的Keybinding Scheme!

在Eclipse RCP的基础上开发,我们会感到非常便利,有好多可重用的组件。但有时也有些意想不到的问题,  Key bindings就是其中之一。

一般情况下,我们通过扩展org.eclipse.ui.bindings来增加新的快捷键绑定。下面的例子中,我设置了一个CTRL+T的快捷键。

6-15-2015 2-25-23 PM

6-15-2015 2-25-47 PM

乍看上去,编译使用都能够做良好,问题出在schemeId上。org.eclipse.ui.defaultAcceleratorConfiguration是默认的scheme, 它里面其实包含了大量的快捷键设定,很多可能是你不要的,比如CTRL+F(查找与替换),CTRL+N(新建Wizard)等等。如果发布到产品中,反而画蛇添足。

修正这个问题很容易,就是设置自己的scheme。下面是个例子,

6-15-2015 2-32-59 PM

6-15-2015 2-33-09 PM

别忘要同时修改一下,Key的设定,

6-15-2015 2-34-25 PM

还有如果要让自定义的scheme能生效,要修改一下plugin_customization.ini文件,加入如下配置,

这样,你的Scheme就会生效了。

可能你回问,如果想重用如CTRL+S的快捷键怎么办?那就重用File Save的commandId,如下,

6-15-2015 2-40-14 PM

6-15-2015 2-39-30 PM

这样问题就解决了。

在Nexus OSS上建Eclipse p2 repository

Eclipse p2使用了特殊的repository Layout(其实我认为就是所谓的”Update Site”)。它有别于一般的maven2 layout, Maven 3可以支持,maven tycho也可以很好的支持。但每次都要连接Eclipse的中央仓库,速度是一个问题,稳定性很不好(尤其在中国),有时会断掉。

为了解决这个问题,我尝试地在公司内部搭建了Nexus OSS,并建立了Eclipse p2的Proxy repository。

搭建Nexus OSS

Nexus OSS是流行且免费的部署私有Maven Repository的工作。安装很简单,从官网上下载最新的版本,解压,再运行$install_folder/bin/nexus start. 这个命令还不需要root权限。

TIP:最好把JVM最大内存调整一下。修改$install_folder/bin/jsw/conf/wrapper.conf, 找到wrapper.java.initmemorywrapper.java.maxmemory,分别调大一些。我的配置分别是256和1024.

安装p2的扩展

默认的Nexus OSS是不支持p2 layout的。需要在Sonatype RSO上下载相关的扩展。打开Sonatype RSO网页,搜索nexus-p2-bridge-pluginnexus-p2-repository-plugin两个扩展,我选择了2.6.3-01版本,分别下载它们的bundle zip(包含了dependencies)。再解压到$install_folder/nexus/WEB-INF/plugin-repository,然后重启Nexus OSS ($install_folder/bin/nexus restart).

配置p2 proxy repository

admin登录后,进入Repositories,选择Add->Proxy Repository,

在打开的设置页面里,输入repository id, repository name, format要选择p2, 还有设置Remote Storage Location。我的例子中选择了Eclipse Indigo.

Nexus会生成新的Repository Link,它和Remote Location可以一样使用。第一次的Index要慢一些。

其他用处

新产生的Link还可以帮助定义Target Platform。做Eclipse RCP开发的Team一定会遇到统一Target Platform的问题,说白了就是全组人的目标平台环境要完全一样。默认情况下,Target Platform是和IDE一样,所以如果A用Eclipse 4.3, B用Eclipse 3.7,可想而知那是多么混乱。

Eclipse PDE想到了这个问题,我们可以定义Target文件,在里面详细定义目标平台的构成,包含哪些Feature,哪些Plugin。有了内部的Repository,在Target文件里可以直接引用相应的连接,非常的稳定!

总结

Nexus OSS里可以添加p2 proxy repository,可以大大提高项目在编译时的速度和稳定性,提高生产效率。但它不支持做Host Repository,那是Pro版本里的功能。

 

 

打算写个需求管理(Requirement Management)的工具

工作这几年了,实现过全新的项目,也维护过老旧的项目,总是有一种感觉,就是几个产品的需求管理做的都不好,需求都非常零散的分布在JIRA ticket里(可能很多在comments里),没有总体的控制。一个普遍的现象是你问某个产品工程师,某版本的产品有哪些功能,或者某更新版本比旧版本多了什么功能时,他不能马上回答你。一个可能的做法就是去filter JIRA ticket, 然后慢慢读里面的comment或者附件。

这种做法真的很没有效率,一直希望公司能引进一套做需求管理的工具,像IBM Rational就有比较完善的解决方案。不过这些产品也真的价格不菲。

打算自己写一个玩玩,其实的目前能想到的功能也不多,

  • 能结构化的组织产品的需求
  • 建立需求间的相互联系
  • 可以和JIRA ticket连接(记个Ticket ID就好)
  • 可以比较不同版本之间的差异。
  • 最好能和开发和测试的工作连在一些,如代码的改动,有没有测试等。

先用Eclipse RCP写个样子出来看看吧,正好也学一下RCP的其它特性。