背景
Adnroid系统代码很庞大,查看费劲,Source Insight 和Android Studio导入源码,都不是很好用,OpenGrok支持代码搜索和跳转,也支持查找文件,因此,为了方便日常开发,搭建OpenGrok很有必要,下面将介绍详细的搭建步骤
OpenGrok环境搭建
一、下载工具
1、tomcat下载
tomcat版本 :apache-tomcat-9.0.64.tar.gz
下载地址:https://tomcat.apache.org/download-90.cgi
将其存放至/opt目录下
2、opengrok下载
opengrok版本:opengrok-1.3.16.tar.gz
下载地址:https://github.com/oracle/opengrok/releases/tag/1.3.16
将其存放至/opt目录下
二、jdk安装
注:运行环境需要大于等于jdk8的版本
sudo apt-get install openjdk-8-jdk
三、安装universal-ctags
exuberant-ctags已经不再维护,对opengrok不友好。
从github上下载universal-ctags进行编译安装。
已下载的安装包:https://download.csdn.net/download/banzhuantuqiang/88255471
也可从github上下载:
下载地址:git clone https://github.com/universal-ctags/ctags.git
1、移除exuberant-ctags
sudo apt-get remove --purge exuberant-ctags
2、编译安装universal-ctags
tar -zxvf ctags.tar.gz
cd ctags/
./autogen.sh
./configure
make
sudo make install
3、查看 安装位置,后面构建索引需要用到
whereis ctags
结果:
ctags: /usr/local/bin/ctags
4、查看ctags版本
ctags --version
结果:
Universal Ctags 6.0.0, Copyright (C) 2015-2022 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Aug 26 2023, 06:24:56
URL: https://ctags.io/
Output version: 0.0
Optional compiled features: +wildcards, +regex, +gnulib_regex, +iconv, +option-directory, +packcc, +optscript
四、安装Tomcat
1、解压并重命名
cd /opt
tar -zxf apache-tomcat-9.0.64.tar.gz
rm apache-tomcat-9.0.64.tar.gz
mv apache-tomcat-9.0.64/ tomcat
2、启动服务器
cd /opt/tomcat/bin/
./startup.sh# 同网络下浏览器输入主机IP,若成功打开网页则服务器安装成功
例如:http://192.168.21.225:8080/
3、关闭服务器
cd /opt/tomcat/bin/
./shutdown.sh
五、安装OpenGrok
解压安装
cd /opt
tar -zxf opengrok-1.3.16.tar.gz
rm opengrok-1.3.16.tar.gz
mv opengrok-1.3.16/ opengrok
六、Tomcat与OpenGrok关联及配置
1、查看webapps目录
ls -l /opt/tomcat/webapps
可以看到目录下并没有source目录
2、source.war文件复制
将opengrok的lib目录下的source.war文件,复制到tomcat的webapp目录下
cp /opt/opengrok/lib/source.war /opt/tomcat/webapps/
3、重启tomcat服务器
执行下面的操作后,此时系统会自动在webapp目录下生成一个source目录
cd /opt/tomcat/bin/
./startup.sh
./shutdown.sh
4、再次查看webapps目录
ls -l /opt/tomcat/webapps
可以看到目录下生成了source目录
5、删除source.war文件
6、在opengrok目录下创建相应的目录
mkdir -p /opt/opengrok/source # 该目录直接关联到源代码
mkdir -p /opt/opengrok/data # 该目录存放源代码索引文件
mkdir -p /opt/opengrok/etc # 该目录存放后期代码同步的必须文件
7、配置环境变量
vim /etc/profile
# 添加如下变量
export OPENGROK_TOMCAT_BASE=/opt/tomcat
export CATALINA_HOME=/opt/tomcat
export OPENGROK_APP_SERVER=Tomcat
export OPENGROK_INSTANCE_BASE=/opt/opengrok
注:如果多个地方装了tomcat,该环境变量将决定用哪个
8、更新环境变量
source /etc/profile
9、建立源码仓库,并放入相关代码(此目录根据实际情况建立)
10、软链接关联相关代码
根据自己opengrok位置和源码位置链接,这里的source和步骤6建的要对应上
cd /opt/opengrok/source
ln -s /data01/Qualcomm/865/android10/Qualcomm865_vir Qualcomm865_vir
注:如果多套代码,就建立多个映射,建议代码用映射的方法
11、生成索引文件和configuration.xml文件
索引文件路径:/opt/opengrok/data/index
configuration.xml文件路径:/opt/opengrok/data/xref
命令如下:
sudo java -Xmx10g -jar /opt/opengrok/lib/opengrok.jar -c /usr/local/bin/ctags -P -S -v -s /opt/opengrok/source -d /opt/opengrok/data -i d:.git -i d:.repo -i d:out -i *.js -i *.jar -i *.zip -i *.db -i *.apk -i *.tar -i *.tar.bz2 -i *.json -i *.gz -W /opt/opengrok/etc/configuration.xml -m 512
注意:这里根据代码量决定需要多长时间,代码量大,就比较耗时,一般配置Java最大堆内存为8g,防止内存溢出,如果不配置,内存溢出会中断构建索引
注:这里要把各个参数都设置好,看好每个参数的函数所对应的文件:
-Xmx8g:配置Java最大堆内存为8g,防止内存溢出。
-jar:指定opengrok.jar:指定opengrok.jar包.(这里不改)
-c :指定universal-ctags的路径,这里我们之前获得过ctags的路径。
-d :指定文件存放路径,在上面的路径下新建data文件夹
-w :指定configuration.xml的路径
-m :指定opengrok索引时的缓存大小,默认只有16M
-i : 后面表示忽略文件夹或者某种格式的文件
12、关联configuration.xml文件
将/var/opengrok/etc/configuration.xml路径替换为上一步新生成的/opt/opengrok/etc/configuration.xml
vim /opt/tomcat/webapps/source/WEB-INF/web.xml
13、启动tomcat服务器
cd /opt/tomcat/bin/
./startup.sh
./shutdown.sh
./startup.sh
14、功能验证
浏览器内输入192.168.21.225:8080/source便可使用opengrok搜索代码
注:默认是8080端口,可在tomcat/conf/server.xml修改默认端口
注:如果构建索引失败,将opengrok/data目录删除,-Xmx值和-m 值设置大一些