一、背景
在前一家公司,公司提供了OpenGrok服务器供大家检索查阅代码。但在新公司,大家都使用vscode或Sourse Insight,这就存在一些问题:
-  不能跳转或者跳转比较慢。 
-  搜索查询速度慢,且结果展示不易查看。 
这严重影响了检索、阅读代码的效率,为了解决上面的问题,自己搭建了一个OpenGrok代码代码服务器,效果非常好,这篇文章记录下其中的过程,也给遇到同样问题的同学一个参考。
二、OpenGrok简介
OpenGrok是一个快速的代码搜索和交叉引用引擎。由Java语言编写而成,主要有以下功能。
-  可以搜索全文本、定义、符号、路径和修改记录。 
-  可以将搜索限制在某个子树。 
-  可以增量更新索引。 
-  支持Google搜索类似搜索语法。 
-  支持搜索某个时间段内被修改的文件。 
-  支持使用通配符。 
-  支持在搜索结果中显示匹配的行。 
-  为版本控制工具提供了只读的web接口,包括文件修改提交记录和任意两个版本的文件差异。 
-  支持在线交叉引用查询,包括语法高亮。 
-  可扩展性强,可为新的编程语言和新的版本控制工具编写插件。 
三、OpenGrok服务器搭建(Windows)
这里只介绍在Windows上安装搭建OpenGrok服务器的方法,Linux的安装方法可以自行百度。
3.1 下载OpenGrok
Releases · oracle/opengrok · GitHub

3.2 下载安装Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,我们今天就用它来搭建我们的OpenGrok本地服务器。 Apache Tomcat® - Apache Tomcat 8 Software Downloads

-  添加环境变量: 
TOMCAT_HOME=D:\software\tomcat\apache-tomcat-10.1.11-windows-x64\apache-tomcat-10.1.11
-  用GBK替换conf/logging.properties UTF-8,解决tomcat的乱码问题 
-  运行bin/startup.bat 
-  访问http://localhost:8080/ 出现tomcat官网文件,证明tomcat安装成功 

3.3 下载安装JDK
Java Downloads | Oracle 中国

3.4 下载ctags
[https://github.com/universal-ctags/ctags-win32/releases](https://github.com/universal-ctags/ctags-win32/releases CTAGS_HOME=D:\software\ctag\ctags)

-  添加环境变量 
CTAGS_HOME=D:\software\ctag\ctags
3.5 配置OpenGrok环境
3.5.1 配置Data Root目录
data root 用于放置生成的索引文件和配置信息,比如我在 OpenGrok 目录下创建了一个 data 目录用作 data root,即 D:\software\opengrok\opengrok-1.12.12\data。
3.5.2 配置source.war
将 OpenGrok 的 lib 目录里的 source.war 解压到 D:\software\tomcat\apache-tomcat-10.1.11-windows-x64\apache-tomcat-10.1.11\webapps 配置 WEB-INF\web.xml 文件的 CONFIGURATION 为上一步生成的 data 目录下的 configureation.xml,比如我的配置:
<display-name>OpenGrok</display-name>
    <description>A wicked fast source browser</description>
    <context-param>
        <description>Full path to the configuration file where OpenGrok can read its configuration</description>
        <param-name>CONFIGURATION</param-name>
        <param-value>D:/software/opengrok/opengrok-1.12.12/data/configuration.xml</param-value>
    </context-param>
3.5.3 配置source root
可以让 OpenGrok 认为 source root 下的每个子文件夹是一个项目,所以我们利用这个特性来配置和阅读多个项目源码就好了。 我的做法是在 OpenGrok 直接使用我Hyper-H创建的虚拟机的映射地址:Z:\project
3.5.4 建立索引
使用 opengrok.jar 调用 ctags 来为源码建立索引。命令行使用:
java -jar "D:\software\opengrok\opengrok-1.12.12\lib\opengrok.jar" -W "D:\software\opengrok\opengrok-1.12.12\data\configuration.xml"  -P -S -v -s "Z:\project" -d "D:\software\opengrok\opengrok-1.12.12\data"
 -P 表示为 source root 目录下的每个一级子目录生成一个工程。
 -S 表示搜索并添加 “external” source repositories。
 -v 表示打印操作的进度信息。
 -s 表示指定 source root。
 -d 表示指定 data root。
 -W 表示指定将配置写到该文件。
 还有更多配置选项可以使用 java -jar /path/to/opengrok.jar 查看。
成功时的样子:

一个专注于“嵌入式知识分享”、“DIY嵌入式产品”的技术开发人员,关注我,一起共创嵌入式联盟。



















