ubuntu16.04下搭建opengrok閱讀android源碼
寫在前面
最近準備瞭解,學習一下安卓的源碼。但是使用Android Studio導入源碼,使用過朋友的都知道那叫一個慢,這個時候就需要一個自己搭一個本地的opengrok服務器來解除我們的痛處。
openGrok的作用:
- 通過瀏覽器查看代碼
- 快速查找
- 每個java/cpp 文件的方法/成員變量列表顯示
…
更多的功能用的時候再一一體會
系統環境
- 系統
ubuntu16.04 - 環境軟件
open jdk 1.8以上
安裝步驟
1. 安裝universal-ctags
因爲新版本的OpenGrok對exuberant-ctags的支持不太好,所以官方建議安裝universal-ctags。
universal-ctags的下載地址:
https://github.com/universal-ctags/ctags
具體的命令如下:
sudo apt-get update
# 卸載 exuberant-ctags
sudo apt-get remove --purge exuberant-ctags
# 安裝依賴軟件 autoconf
sudo apt-get install autoconf
mkdir ~/soft/universal-ctags
cd ~/soft/universal-ctags
# 下載universal-ctags
git clone https://github.com/universal-ctags/ctags
cd ctags
./autogen.sh
# 我的安裝路徑。就使用這個,後面索引就是這個路徑(/home/zjs/soft/universal-ctags/bin)
./configure --prefix=/home/zjs/soft/universal-ctags
make -j8
# 安裝(這裏會將軟件安裝到~/soft/universal-ctags/bin目錄下,這個路徑需要在後面寫入配置文件中)
sudo make install
2. 安裝tomcat8
- 安裝
sudo apt-get install tomcat8
- 啓動服務
sudo /etc/init.d/tomcat8 start
- tomcat常用的三條命令
sudo /etc/init.d/tomcat8 restart
sudo /etc/init.d/tomcat8 start
sudo /etc/init.d/tomcat8 stop
- 測試是否安裝成功
在瀏覽器輸入http://localhost:8080/看到:
3. 下載opengrok
openGrok的下載地址
https://github.com/oracle/opengrok/releases/
下載後綴爲.tar.gz的文件即可,我這裏下載的是1.3.0版本。下載後,將它解壓到你想放置的位置。我將它放在了 ~/soft/OpenGrok/ 下。
官網說要安裝tools下面的opengrok-tools.tar.gz,這個可以不安裝,不是必須的。
解壓後在軟件根目錄新建三個文件夾。
- src 存放代碼(或者是代碼的映射)
- data 存放索引
- etc 存放配置文件
mv ~/soft/OpenGrok/opengrok-1.3.0 ~/soft/OpenGrok/opengrok
cd ~/soft/OpenGrok/opengrok
mkdir src data etc
因爲我的代碼是之前已經下載好的,所以這裏直接建一個軟鏈接將代碼和src目錄關聯起來
cd ~/soft/OpenGrok/opengrok/src
ln -s ~/code/src/ android #(~/code/src/ : 需要鏈接的源碼路徑 android : src下的鏈接 )
複製source.war到tomcat中
# 不需要解壓縮,因爲會自己解壓
sudo cp ~/soft/OpenGrok/opengrok/lib/source.war /var/lib/tomcat8/webapps/
修改 /var/lib/tomcat8/webapps/source/WEB-INF/web.xml 中 configuration.xml 的路徑
gedit /var/lib/tomcat8/webapps/source/WEB-INF/web.xml
<context-param>
<description>Full path to the configuration file where OpenGrok can read its configuration</description>
<param-name>CONFIGURATION</param-name>
<param-value>/home/zjs/soft/OpenGrok/opengrok/etc/configuration.xml</param-value> //自己創建的etc路徑,這裏最好寫絕對路徑
</context-param>
4. 創建索引
新建一個openGrok.sh腳本,輸入下面的命令
java \
-Djava.util.logging.config.file=/home/zjs/soft/OpenGrok/opengrok/doc/logging.properties \
-Xmx6g -jar /home/zjs/soft/OpenGrok/opengrok/lib/opengrok.jar \
-c /home/zjs/soft/universal-ctags/bin/ctags \
-s /home/zjs/soft/OpenGrok/opengrok/src -d /home/zjs/soft/OpenGrok/opengrok/data -H -P -S -G \
-W /home/zjs/soft/OpenGrok/opengrok/etc/configuration.xml -U http://localhost:8080/source \
-T 2 \
-m 1024
修改腳本的權限
sudo chmod a+x openGrok.sh
執行腳本
./openGrok.sh
等待腳本執行完成(這個過程有點漫長,想快一點可以在腳本里面將-T這一行去掉,使用cpu可以支持的最大線程來生成索引。只是這樣做會讓你的電腦暫時有點卡).
重啓Tomcat服務器
sudo /etc/init.d/tomcat8 restart
在瀏覽器輸入 http://localhost:8080/source/,可以看到如下的效果那表示你就成功了。
Project的位置是顯示你的安卓源碼的目錄名
注意事項
- 命令的用法可以通過執行下面的命令,獲取使用幫助
java -jar /home/zjs/soft/OpenGrok/opengrok/lib/opengrok.jar -h
- src中使用軟鏈接的,在-s後面的源碼路徑必須要將軟鏈接的路徑寫全。即如果你在src中創建了一個文件夾,並將代碼指向了它。那麼你的路徑也必須要包含該文件夾,而不能只是上一級目錄。
舉例:
創建了一個路徑/home/zjs/soft/opengrok/opengrok/src/code1 並在code1上創建一個軟鏈接指向代碼。
這個時候必須寫/home/zjs/soft/opengrok/opengrok/src/code1 而不能寫/home/zjs/soft/opengrok/opengrok/src ,否則雖然執行不會報錯,但是索引不能生成。 - 生成索引的時候如果出現內存溢出,情按照上面的第4部,修改-Xmx6g的值,根據你的服務器內存大小調整。
- 如果要實現自動更新索引,需要安裝opengrok提供的工具包,具體流程見官網的流程。(step4) https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok