ubuntu16.04下搭建opengrok閱讀android源碼

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,這個可以不安裝,不是必須的。
解壓後在軟件根目錄新建三個文件夾。

  1. src 存放代碼(或者是代碼的映射)
  2. data 存放索引
  3. 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.xmlconfiguration.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的位置是顯示你的安卓源碼的目錄名

注意事項

  1. 命令的用法可以通過執行下面的命令,獲取使用幫助
java -jar /home/zjs/soft/OpenGrok/opengrok/lib/opengrok.jar -h
  1. src中使用軟鏈接的,在-s後面的源碼路徑必須要將軟鏈接的路徑寫全。即如果你在src中創建了一個文件夾,並將代碼指向了它。那麼你的路徑也必須要包含該文件夾,而不能只是上一級目錄。
    舉例:
    創建了一個路徑/home/zjs/soft/opengrok/opengrok/src/code1 並在code1上創建一個軟鏈接指向代碼。
    這個時候必須寫/home/zjs/soft/opengrok/opengrok/src/code1 而不能寫/home/zjs/soft/opengrok/opengrok/src ,否則雖然執行不會報錯,但是索引不能生成。
  2. 生成索引的時候如果出現內存溢出,情按照上面的第4部,修改-Xmx6g的值,根據你的服務器內存大小調整。
  3. 如果要實現自動更新索引,需要安裝opengrok提供的工具包,具體流程見官網的流程。(step4) https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章