配置 source root。
可以讓 OpenGrok 認為 source root 下的每個子文件夾是一個項目,所以我們利用這個特性來配置和閱讀多個項目源碼就好了。
我的做法是在 OpenGrok 下創(chuàng)建了一個子目錄 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 調(diào)用 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 玩耍了。
當新添加了項目,或者現(xiàn)有項目有源碼更新時,再次執(zhí)行上一步的命令,就能增量更新索引了。
配置多項目
我曾經(jīng)為如何在 OpenGrok 里配置多項目苦惱了好久——一開始我是把 Android 源碼的根目錄當作 source root 的,可想而知 OpenGrok 把 Android 分成了好多個子項目,而這時我也沒法再添加新的工程了。
后來才發(fā)現(xiàn)建一個專用的 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 控+折騰狂魔,可以一試,這里僅給出插件地址: