Ubuntu服务器搭建OpenGrok,阅读Android源码
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!!!