为什么需要OpenGrok
如何快速的搜索代码或文件?
如何快速的实现代码跳转以方便阅读?
有很多方法,比如linux命令的方式实现检索,source insight等工具实现代码的跳转和阅读。但对于大规模的项目源码,动辄几十G的大小,source insight就显得力不从心了,加载慢,工程同步时间长。
OpenGrok正是为解决这种烦恼而生。
什么是OpenGrok
OpenGrok一个快速、便于使用的源代码搜索与对照引擎。OpenGrok能够用户帮助搜索,对照,定位源代码树。
OpenGrok官方主页请参照:http://opengrok.github.io/OpenGrok/
安装方法
环境准备
官网上对环境的要求
* Latest Java 1.8
* A servlet container like GlassFish or Tomcat (8.x or later) also running with Java at least 1.8
* Exuberant Ctags
Java
对于Java不用过多介绍了,一般Ubuntu下搭建开发环境时都会安装,唯一需要注意的是,可能我们安装了多个Java版本,需要用java -version
检查当前生效的java版本是否满足1.8及以上的要求
android@ubuntu:~$ java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3~14.04-b15)
OpenJDK 64-Bit Server VM (build 25.141-b15, mixed mode)
Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
前往官网下载 http://tomcat.apache.org/
以我下载的为例 apache-tomcat-8.5.23.tar.gz
解压后用如下命令启动tomcat
android@ubuntu:~$ cd opt/apache-tomcat-8.5.23/bin/
android@ubuntu:~/opt/apache-tomcat-8.5.23/bin$ ./startup.sh
在浏览器中访问地址:http://localhost:8080
如果能够显示欢迎页面说明配置成功。
Exuberant Ctags
ctags(Generate tag files for source code)最先是用来生成C代码的tags文件,后来扩展成可以生成各类语言的tags, 有些语言也有专有的tags生成工具(比如java的jtags, python的 ptags).可以方便代码阅读的工具。它可以帮助程序员很容易地浏览源代码。在源码下执行,可以生成索引文件。
执行如下命令进行安装:
sudo apt-get install exuberant-ctags
安装OpenGrok并索引代码
上面准备了安装环境,接下来正式开始安装OpenGrok
安装OpenGrok
* 下载
https://github.com/OpenGrok/OpenGrok/releases
我下载的是opengrok-1.1-rc16.tar.gz
* 解压
* 安装
将上面解压得到的opengrok-1.1-rc16/lib/source.war
文件copy到apache-tomcat-8.5.23/webapp
目录下。
copy完成后,几秒后,该文件将会自动在同目录下生成source文件夹(其中有一系列内容)
* 验证
在浏览器中访问地址:http://localhost:8080/source
如果能够正常显示OpenGrok搜索页面说明配置成功。
索引代码
以我本地执行方法为例,请参考以下命令索引代码。
android@ubuntu:~$ cd opt/opengrok-1.1-rc16/bin
android@ubuntu:~/opt/opengrok-1.1-rc16/bin$ sudo ./OpenGrok index /home/android/myProject/ref
//注意: index后所跟的路径为你想要索引的代码路径
根据源码大小不同,几个小时或更长时间,索引完成后,访问页面http://localhost:8080/source进行代码搜索。