【IT168 专稿】
本文是Rational软件技术征文大赛(http://tech.it168.com/focus/200903/rationalgame/index.html)三等奖获奖作品。
当被问到“你知道Jazz,你在使用Jazz吗”这个问题时,我相信很多人都会不假思索地说“是的”。但如果问题换成“你在Jazz平台的基础上开发过新工具吗”,大家是否还会给出肯定的回答呢?
在Jazz平台席卷全球的同时,大家对Jazz的了解和喜爱越来越深,更多的人开始尝试基于Jazz的开发,以求对Jazz更深的了解。我们也是其中的一份子,并且成功实现了基于Jazz的用于代码检查的插件EasyInspect。这里,希望能够跟大家一起分享我们在开发EasyInspect过程中所获得的实践经验,并希望它能为其他Jazz热爱者带来一定帮助。
首先,简单介绍一下我们的成果EasyInspect。前面已经提过,它是基于Jazz平台的插件,可以很好的与Rational Team Concert集成,它的目标是方便开发人员进行高效的代码检查,从而提高代码的质量。它主要的特性有:
· 基于上下文的代码评论:自动记录被评论代码段的位置信息;源文件及被评论代码段的智能定位。
· 与版本控制系统的集成:保证正确版本的源文件被检查;代码评论与版本信息保持关联。
· 高效的通信:借用了Jazz平台的通信机制,使代码作者可以及时了解到新的评论;方便开发组基于特定的代码评论发起讨论。
在开发EasyInspect的具体实践中,我们与Jazz的多个特性进行了亲密的接触。在接下来的部分,将从如下几个方面来介绍我们的实践,包括开发环境的搭建、工作项(WorkItem)的应用与扩展、版本控制与应用、工作流、与即时交谈工具的集成、插件的部署等。
1.配置基于Jazz RTC的扩展开发环境
注册Jazz.net帐号
在开始之前,先确保你有一个Jazz.net帐号。Jazz.net帐号不仅是下载代码的必要前提,它还允许你访问Jazz.net网上的各种开发资源,包括WIKI、论坛和整个开发社区。
请访问https://jazz.net/首页注册Jazz.net帐号。
下载Jazz RTC代码
为了配置Jazz RTC开发环境,首先需要下载Jazz RTC的客户端和服务器端代码,我们同时需要可执行代码和源代码。
请访问https://jazz.net/downloads/RationalTeamConcert找到下载页面。到写稿时Jazz RTC的最新版本是1.0.1.1。在“All Downloads”标签下找到下面的下载内容。
· 下载可执行代码
Express-C,Client for Eclipse IDE and Server (Zip版)
· 下载源代码(在下载页面底部)
- Jazz Team Server
- Rational Team Concert Client
- Jazz JUnit Tests
解压缩成开发环境
将Client for Eclipse IDE and Server(Zip版)解开到文件系统,下文以[InstallDir]指代解压缩的位置。由于Zip中的目录结构非常深,为了确保解压缩后的文件路径不超过文件系统的一些限制,请尽可能在系统根目录(或浅层目录)解压缩。
解开后的内容结构大致如下所示。
[InstallDir]
jazz
buildsystem
client
repotools
scmtools
server
接着解压缩源代码Zip文件。它们应当被解开到[InstallDir]/jazz/client/eclipse的位置。之后,文件系统中应该出现下面的目录结构。
[InstallDir]
jazz
client
eclipse
source
base
eclipse
rtc
server
tests
到此为止,你已经准备好了Jazz RTC插件扩展的开发环境。你可以在在下面的位置找到Rational Team Concert的启动文件:
[InstallDir]/jazz/client/eclipse/TeamConcert.exe
这将是你之后的开发环境。
启动RTC和配置Target Platform
启动RTC开发环境([InstallDir]/jazz/client/eclipse/TeamConcert.exe),并在Preference中(Window > Preferences... > Plug-in Development > Target Platform)配置插件开发的Target Platform为Jazz Team Server and Binaries。

然后点击“Load Target”按钮,并在完成后确认。
启动和调试客户端的Jazz插件
到这里,Jazz客户端的开发环境已经配置完成。你可以像开发一般Eclipse插件一样开发Jazz RTC客户端的插件了,因为Jazz RTC插件首先也是一个Eclipse插件。
运行和调试Jazz RTC插件的方法和普通Eclipse插件并无不同,可以在Run/Debug Configuration中(Run > Open Run/Debug Dialog…)配置。例如下图就是一个运行配置,加载了Workspace中一些RTC插件运行和调试。

启动和调试服务器端的Jazz插件
Jazz与传统的IDE最大区别就在于它拥有统一的服务器端,因此开发Jazz RTC扩展的一个重要内容是开发服务器端的扩展插件。为了方便服务器端的开发和调试,有必要配置一个能直接在IDE中启动和调试的Jazz服务器。
之前我们已经下载和安装了Jazz Server的可执行代码,现在需要做的就是在IDE中建立一个运行配置来启动它。Jazz开发社区中有预先配置好了运行配置,我们可以直接下载使用。
https://jazz.net/wiki/pub/Main/JazzServerRunAndDebug/JazzServer-06-RTC10-Maximal.launch
下载上面的launch文件,并复制到Workspace中的任意项目里(一般launch运行配置被放在项目顶层的launches目录中)。刷新Workspace,就可以在Run/Debug Configuration中(Run > Open Run/Debug Dialog…)找到Jazz Server的运行配置。

勾选Workspace中你开发的服务器端插件,之后启动就可以运行和调试Jazz Server了。
(若遇到“org.apache.commons.logging.LogConfigurationException: Invalid class loader hierarchy. You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed.”,请看下面关于org.apache.commons.logging的问题的解决办法。)
注意:已知关于org.apache.commons.logging的问题
有些情况下,会在启动Jazz Server时遇到关于logging的异常“org.apache.commons.logging.LogConfigurationException”。这时打开运行配置,并在Target Platform下寻找org.apache.commons.logging,会看到类似下面,同时存在1.0.4和1.0.5两个不同版本的情况:

由于Eclipse的一个缺陷,如果你禁用其中一个,下次启动时它又会被自动启用。解决的办法是:
(1)在Target Platform下面禁用所有的logging实现。
(2)导入org.apache.commons.logging(1.0.5.jazz)到Workspace中(从菜单选择File > Import... > Plug-ins and Fragments)。
(3)在运行配置的Workspace组中勾选org.apache.commons.logging(1.0.5.jazz)。
然后重新启动运行配置,问题应该解决了。