OpenGrok : "A wicked fast source browser"
今天向大家介绍一款超级快的源代码检索和交叉引用工具-OpenGrok

OpenGrok全部用Java编写的,完全与平台无关。要使用OpenGrok,需要先安装以下软件:
- Latest Java
- A servlet container like
GlassFish or
Tomcat - Exuberant Ctags
- Subversion 1.3.0 if subversion support is needed
- Mercurial if Mercurial support is needed
如果只是用于浏览源代码,则不需要最后两项。
目前最新的opengrok是opengrok-0.4.tar.gz (4M) 。
到网上找了半天,居然没有找到可以下载Opensolaris source code的地方,http://opensolaris.org/os/downloads/on/ 上的option 1和option 4给出的http连接里面就没有on-src文件,Option 2给的一个bittorrent文件又是"NOT FOUND",option 3: Mercurial简直太慢,另外一个subversion我就没有再试了。还好昨天收到了Starter kit,光盘上有,不用花精力去找了。
在这里,我以在Opensuse 10.2上安装及配置 GlassFish + OpenGrok + OpenSolaris O/N source为例。(对于其它平台也类似,因为相关程序都是java编写的)。
首先将源代码解压到一个目录,比如:/export/home/solsource/usr/src
[安装及配置opengrok]
安装:tar zxvf opengrok-0.4.tar.gz
run.bat/run-quiet.sh/run.sh可用于定时运行以更新源代码的索引文件(index database)。需要修改这些文件里面的路径(比如SRC_ROOT,DATA_ROOT等)以反映你的实际情况。
由于我不会更新源代码,因此我只用调用一次opengrok.jar创建索引文件即可。
opengrok.jar有两种调用模式:
- 第一种,启用图形界面: java -jar opengrok.jar
程序启动后,会显示一个主窗口

点击'Search'文本框右面的文件夹图标打开一个新窗口,

选择相应的'Search index data directory'和'Source tree directory',点击'update'按钮,此时会出现正在更新的信息和进度条,

索引数据库更新完成后,会显示下面的信息。

点击'Close'以返回主窗口。
此时你就可以在相应文本框中输入关键字进行查找。双击查找结果就会打开一个文本编辑器(但是注意,在文本编辑器中就没有交叉引用及查找功能,如果你需要打开的每个文件都具有交叉引用的信息,那么你就需要继续下面的glassfish配置)
- 第二种,命令行: java -jar opengrok.jar -s SRC_ROOT DATA_ROOT
SRC_ROOT和DATA_ROOT与第一种方式一样。
为了配合glassfish的使用,需要修改source.war文件:
- 从source.war文件中解压出web.xml文件:unzip source.war WEB-INF/web.xml
- 编辑web.xml,修改其中对SRC_ROOT和DATA_ROOT的设定
- 重新打包source.war:zip -u source.war WEB-INF/web.xml
下面是我的设置:
<context-param>
<param-name>DATA_ROOT</param-name>
<param-value>/export/home/solsource/opengrok_data</param-value>
<description>REQUIRED: Full path of the directory where data files generated by OpenGrok are stored</description>
</context-param>
<context-param>
<param-name>SRC_ROOT</param-name>
<param-value>/export/home/solsource/usr/src</param-value>
<description>REQUIRED: Full path to source tree</description>
</context-param>
[安装及配置glassfish]

从https://glassfish.dev.java.net/网站下载最新的glassfish,是一个后缀名为jar的软件包。用java程序安装此软件包:
java -jar glassfish-installer-v2-b33e.jar
会显示CDDL 1.0 License信息,回答'A',就会自动解包,当显示"installation complete",表示安装完成,此时在当前目录下会产生一个glassfish的目录。
在设置glassfish之前,你需要设置以下环境变量:
- JDK_HOME
- JRE_HOME
- JAVA_BINDIR
- JAVA_HOME
- JAVA_ROOT
这些变量应该与你安装的最新的java的路径相对应。
为了设置glassfish,我们还需要用ant工具。glassfish软件包自带了一个ant,在glassfish/lib/ant目录下面,因此我们要设置ANT_HOME指向这个glassfish/lib/ant(注意,这里只是相对路径,你要根据你的情况更改);另外我们还需要给$ANT_HOME/bin/ant加上执行权限。
然后运行命令: $ANT_HOME/bin/ant -f setup.xml
ant就会根据setup.xml进行编译。编译如果成功,会显示如下信息:
BUILD SUCCESSFUL
Total time: 35 seconds
注意:你的编译时间可能有所不同。
你可能已经注意到了编译过程中输出的缺省的端口号设置:
create.domain:
[exec] Option adminuser deprecated, use --user instead.
[exec] Using port 4848 for Admin.
[exec] Using port 8080 for HTTP Instance.
[exec] Using port 7676 for JMS.
[exec] Using port 3700 for IIOP.
[exec] Using port 8181 for HTTP_SSL.
[exec] Using default port 3820 for IIOP_SSL.
[exec] Using default port 3920 for IIOP_MUTUALAUTH.
[exec] Using default port 8686 for JMX_ADMIN.
现在我们就可以启动web server。进入glassfish/bin目录,执行:./asadmin,
Use "exit" to exit and "help" for online help.
asadmin> 输入start-appserv
当你看到如下信息时,表示appserver启动成功:
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
启动浏览器访问http://localhost:8080/看是否有"Your server is up and running!"的信息。
访问http://localhost:4848/,输入用户名: admin 密码: adminadmin (缺省)
在右面的"Common Task"页面上点击"Deploy Web Application(.war),然后在"Deploy Enterprise Applications/Modules"页面"Location"处选择"Packaged file to be uploaded to the server",点击"Browse",选中在“配置opengrok”任务中编辑好的source.war文件,点击"open",然后点击右上角的"OK"按钮,你就完成了opengrok的布局。
现在你就可以在你的浏览器中输入http://localhost:8080/source/开始你的源代码之旅了。
现在就下载glassfish并填写调查表,说不定你还有机会中一个iPod Nano呢。心动不如行动!

发表于 Karen 在 2007年04月25日, 04:18 下午 CST #