配置 source root。
可以让 OpenGrok 认为 source root 下的每个子文件夹是一个项目,所以我们利用这个特性来配置和阅读多个项目源码就好了。
我的做法是在 OpenGrok 下创建了一个子目录 D:\Programs\opengrok-0.13-rc4\projects,然后将需要阅读的源码使用符号链接的方式链接到这个目录里:
cd /d D:\Programs\opengrok-0.13-rc4\projectsmklink /J android D:\sources\android_5.1mklink /J openjdk7 D:\sources\openjdk7
这样就有一个叫 android 的工程,它实际对应 D:\sources\android_5.1 下的源码,一个叫 openjdk7 的工程,它实际对应 D:\sources\openjdk7 下的源码。
建立索引。
使用 opengrok.jar 调用 ctags 来为源码建立索引。命令行:
java -jar /path/to/opengrok.jar -P -S -v -s /path/to/source/root -d /path/to/data/root -W /path/to/configuration.xml
-P
表示为 source root 目录下的每个一级子目录生成一个工程。
-S
表示搜索并添加 “external” source repositories。
-v
表示打印操作的进度信息。
-s
表示指定 source root。
-d
表示指定 data root。
-W
表示指定将配置写到该文件。
还有更多配置选项可以使用 java -jar /path/to/opengrok.jar
查看。
比如我使用的完整命令行:
java -jar D:\Programs\opengrok-0.13-rc4\lib\opengrok.jar -P -S -v -s D:\Programs\opengrok-0.13-rc4\projects -d D:\Programs\opengrok-0.13-rc4\data -W D:\Programs\opengrok-0.13-rc4\data\configuration.xml
每次需要建立或更新索引的时候敲这么长一个命令当然很不爽,使用 doskey 或者 Cmder 里的 alias 命令将其 alias 为 opengrok-index 命令会省力不少,再不济把这命令存成个 bat 文件也行啊。
为大型源码建立索引可能需要漫长的时间,这时候可以去干点别的事了。
启动 Tomcat,愉快地 RTFSC。
D:\Programs\apache-tomcat-8.5.8\bin\catalina.bat start
用你最爱的浏览器打开 http://localhost:8080/source/,然后就能愉快地跟 OpenGrok 玩耍了。
当新添加了项目,或者现有项目有源码更新时,再次执行上一步的命令,就能增量更新索引了。
配置多项目
我曾经为如何在 OpenGrok 里配置多项目苦恼了好久——一开始我是把 Android 源码的根目录当作 source root 的,可想而知 OpenGrok 把 Android 分成了好多个子项目,而这时我也没法再添加新的工程了。
后来才发现建一个专用的 source root,然后把各种项目源码根目录软链接过来,让 OpenGrok 为 source root 下的每个 symbol 一级子目录建立一个项目才是正确的使用方法。
Windows 下建立软链接的方法是使用 mklink /J android D:\sources\android_5.1
,Mac OS X 和 Linux 下可以使用 ln -s /path/to/source project_name
。
折腾狂魔
在 Vim 里使用
没错,还有人做了支持在 Vim 里使用 OpenGrok 的插件,如果你是 Vim 控+折腾狂魔,可以一试,这里仅给出插件地址: