OpenGrok是一個很好的閱讀Android開源框架,通過在Linux服務器上搭建該框架,可以做到一處部署源碼,多處閱讀源碼。
下文主要介紹在Ubuntu中搭建OpenGrok的具體步驟。
1、安裝JDK環境
這塊無需介紹,網上有很多的參考方法
2、安裝Tomcat
參考Tomcat官網 https://tomcat.apache.org/
3、安裝和配置ctags
這個很重要,它會直接決定OpenGrok的索引是否成功
(1)查看exuberant-ctags版本信息: dpkg -l exuberant-ctags
如果是5.9~svn20110310-11,則說明是比較老的版本,需要更新
先移除老的版本: sudo apt remove exuberant-ctags -y
(2)安裝新的ctags
sudo apt install autoconf
cd /tmp
git clone https://github.com/universal-ctags/ctags
cd ctags
./autogen.sh
./configure --prefix=/opt/software/universal-ctags
make -j8 sudo make install
建立新編譯安裝的universal-ctags軟鏈接:
sudo ln -s /opt/software/universal-ctags/bin/ctags /usr/bin/ctags
(3)配置ctags
set tags=tags;
set autochdir
cd /tmp
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh
4、安裝OpenGrok
(1)下載和解壓OpenGrok: https://github.com/oracle/opengrok/releases/tag/1.1-rc36
在解壓的目錄下新建data和source 目錄(這兩個目錄可以隨意命名,後面配置成相應目錄名的就可以了),然後將需要搜索的代碼拷貝到source目錄下(當然也可以不用拷貝,直接建立軟鏈接即可,我個人比較傾向於建立軟鏈接的方法,因爲Android的源碼那麼龐大,如果用拷貝的方式會比較麻煩和冗餘)
(2)將opengrok lib目錄下的source.war文件拷貝到tomcat webapps目錄下,然後重新運行tomcat 的startup.bat腳本;
這時會生成一個source文件夾,編輯source\WEB-INF\web.xml
最後驗證是否配置好了,重新運行tomcat 的startup.bat腳本,打開瀏覽器,在地址欄輸入:http://localhost:8080/source/
如果能夠顯示下述界面,就說明配置成功了
(3)建立源碼的索引
將需要被引入的代碼在opengrok-1.1-rc36/source中建立軟鏈接,然後創建索引
sudo java -Djava.util.logging.config.file=/home/share/data/tools/OpenGrok2/opengrok-1.1-rc36/doc/logging.properties \
-jar /home/share/data/tools/OpenGrok2/opengrok-1.1-rc36/lib/opengrok.jar \
-c /usr/bin/ctags \
-P -S -v -s /home/share/data/tools/OpenGrok2/opengrok-1.1-rc36/source/ -d /home/share/data/tools/OpenGrok2/opengrok-1.1-rc36/data -T 1 -H -P -S -G \
-W /home/share/data/tools/OpenGrok2/opengrok-1.1-rc36/data/configuration.xml
創建索引會比較慢,過程中如下如下報錯,可忽略
23:48:36 WARNING: Error from ctags: ctags: Warning: "--file-scope" option is obsolete; use "--extras=+F" instead
23:48:36 WARNING: Error from ctags: ctags: Non-alphanumeric char is used in kind name: 'case classes' in "--regex-scala" option
23:48:36 WARNING: Unexpected end of file!
23:48:36 WARNING: ctags exited with code: 1
耐心等待,如果代碼比較多,有可能需要幾天時間。
Good Luck To You!!!