工欲善其事,必先利其器之—使用OpenGrok阅读源码

工欲善其事,必先利其器之—使用OpenGrok阅读源码OpenGrok的介绍OpenGrokisafastandusablesourcecodesearchandcrossreferenceengine.Ithelpsyousearch,cross-referenceandnavigateyoursourcetree.Itunderstandsvariousprogramfilefor…

大家好,又见面了,我是你们的朋友全栈君。

OpenGrok的介绍

OpenGrok is a fast and usable source code search and cross reference engine. It helps you search, cross-reference and navigate your source tree. It understands various program file formats and history from many Source Code Management systems. In other words it lets you grok (profoundly understand) source code and is developed in the open, hence the name OpenGrok. It is written in Java.

OpenGrok的安装

前置环境

  • Java运行环境至少是1.8以上
  • 安装Java Web容器(classfish或tomcat8.x以上版本)
  • 安装Universal ctags

Tomcat的安装

Tomcat8的下载
把下载的压缩包解压,并放到你喜欢的某个本地目录,如解压后的目录为

/Users/luogw/dev_tool/apache-tomcat-8.5.31
注:解压的文件默认没有执行权限的,需要对该目录的所有文件加上可执行权限

drwxr-xr-x@ 25 luogw  staff     850  4 27 21:25 ./
drwxr-xr-x@ 13 luogw  staff     442  4 27 21:26 ../
-rw-r--r--@  1 luogw  staff   34985  4 27 21:24 bootstrap.jar
-rw-r--r--@  1 luogw  staff    1703  4 27 21:24 catalina-tasks.xml
-rw-r--r--@  1 luogw  staff   15900  4 27 21:24 catalina.bat
-rw-r--r--@  1 luogw  staff   23463  4 27 21:25 catalina.sh
-rw-r--r--@  1 luogw  staff  207125  4 27 21:25 commons-daemon-native.tar.gz
-rw-r--r--@  1 luogw  staff   25145  4 27 21:24 commons-daemon.jar
-rw-r--r--@  1 luogw  staff    2040  4 27 21:24 configtest.bat
-rw-r--r--@  1 luogw  staff    1922  4 27 21:25 configtest.sh
-rw-r--r--@  1 luogw  staff    8509  4 27 21:25 daemon.sh
-rw-r--r--@  1 luogw  staff    2091  4 27 21:24 digest.bat
-rw-r--r--@  1 luogw  staff    1965  4 27 21:25 digest.sh
-rw-r--r--@  1 luogw  staff    3574  4 27 21:24 setclasspath.bat
-rw-r--r--@  1 luogw  staff    3680  4 27 21:25 setclasspath.sh
-rw-r--r--@  1 luogw  staff    2020  4 27 21:24 shutdown.bat
-rw-r--r--@  1 luogw  staff    1902  4 27 21:25 shutdown.sh
-rw-r--r--@  1 luogw  staff    2022  4 27 21:24 startup.bat
-rw-r--r--@  1 luogw  staff    1904  4 27 21:25 startup.sh
-rw-r--r--@  1 luogw  staff   49336  4 27 21:24 tomcat-juli.jar
-rw-r--r--@  1 luogw  staff  405109  4 27 21:25 tomcat-native.tar.gz
-rw-r--r--@  1 luogw  staff    4574  4 27 21:24 tool-wrapper.bat
-rw-r--r--@  1 luogw  staff    5483  4 27 21:25 tool-wrapper.sh
-rw-r--r--@  1 luogw  staff    2026  4 27 21:24 version.bat
-rw-r--r--@  1 luogw  staff    1908  4 27 21:25 version.sh

添加可执行权限

luogw@luogw-MacBook-Pro dev_tool$ chmod -R +x apache-tomcat-8.5.31
# 启动Tomcat
luogw@luogw-MacBook-Pro dev_tool$ ./apache-tomcat-8.5.31/bin/startup.sh
Using CATALINA_BASE:   /Users/luogw/dev_tool/apache-tomcat-8.5.31
Using CATALINA_HOME:   /Users/luogw/dev_tool/apache-tomcat-8.5.31
Using CATALINA_TMPDIR: /Users/luogw/dev_tool/apache-tomcat-8.5.31/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
Using CLASSPATH:       /Users/luogw/dev_tool/apache-tomcat-8.5.31/bin/bootstrap.jar:/Users/luogw/dev_tool/apache-tomcat-8.5.31/bin/tomcat-juli.jar
Tomcat started.

用浏览器打开 http://localhost:8080/ ,正常情况下看到所示页面,表明安装成功
这里写图片描述
在.bash_profile中添加如下启动与并闭的Tomcat的alias

# for tomcat
alias start_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/startup.sh'
alias close_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/shutdown.sh

Universal Ctags的安装

使用brew安装Ctags

brew install --HEAD universal-ctags/universal-ctags/universal-ctags

OpenGrok的安装

OpenGrok下载列表
下载对应的压缩包并解压,解压出来的目录放在你喜欢的某个目标即可,如我的解压目录位置是 /Users/luogw/dev_tool/opengrok-1.1-rc29

OpenGrok的使用实践

示例:搭建JDK源码的阅读环境

环境配置

在.bash_profile文件中添加如下环境变量的配置

# for tomcat
alias start_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/startup.sh'
alias close_tomcat='${HOME}/dev_tool/apache-tomcat-8.5.31/bin/shutdown.sh'

# for opengrok,实际目录位置视具体的情况更改
OPENGROK_INSTANCE_BASE=${HOME}/dev_tool/opengrok-1.1-rc29
export OPENGROK_INSTANCE_BASE
OPENGROK_TOMCAT_BASE=${HOME}/dev_tool/apache-tomcat-8.5.31
export OPENGROK_TOMCAT_BASE
OPENGROK_CTAGS=/usr/local/bin/ctags
export OPENGROK_CTAGS
OPENGROK_SRC_ROOT=${HOME}/personal/code
export OPENGROK_SRC_ROOT
OPENGROK_DATA_ROOT=${HOME}/personal/opengrok_index
export OPENGROK_DATA_ROOT
OPENGROK_VERBOSE=true
export OPENGROK_VERBOSE
alias opengrok='${HOME}/dev_tool/opengrok-1.1-rc29/bin/OpenGrok'

发布Web应用

luogw@luogw-MacBook-Pro opengrok_index$ opengrok deploy
Loading the default instance configuration ...
Installing /Users/luogw/dev_tool/opengrok-1.1-rc29/bin/../lib/source.war to /Users/luogw/dev_tool/apache-tomcat-8.5.31/webapps ...

Start your application server (Tomcat),  if it is not already
running, or wait until it loads the just installed web  application.

OpenGrok should be available on <HOST>:<PORT>/source
  where HOST and PORT are configured in Tomcat.

生成索引

luogw@luogw-MacBook-Pro notes$ source ~/.bash_profile
luogw@luogw-MacBook-Pro notes$ opengrok index
Loading the default instance configuration ...
WARNING: OpenGrok generated etc path /Users/luogw/dev_tool/opengrok-1.1-rc29/etc  doesn't exist Attempting to create generated etc directory ... Creating default /Users/luogw/dev_tool/opengrok-1.1-rc29/logging.properties ...

生成索引需要些时间…..

搜索代码

# 启动Tomcat
start_tomcat
# 浏览器打开链接 [http://localhost:8080/source/](http://localhost:8080/source/)

效果截图如下
这里写图片描述

这里写图片描述

参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141722.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开心网买房子外挂_开心躲猫猫穿墙版下载

    开心网买房子外挂_开心躲猫猫穿墙版下载     开心网的买房子组件出了很久了,竟然到现在还没有出一个买房外挂。上星期某一晚上基于turbozv.com提供的抢车位的源代码,改写了一个买房子的外挂,此外挂不具有抢人住自己家的功能,那个不赚钱。来钱最快的是每隔一小时换一个地方住,随机得0到6000之前的住房津贴。经过一个星期的尝试,平均每天入帐5万,嘿嘿。发给大家一起来挂吧,祝大家早日住上大别墅。…

    2025年11月4日
    4
  • java.lang.OutOfMemoryError:GC overhead limit exceeded

    java.lang.OutOfMemoryError:GC overhead limit exceeded简单来说,java.lang.OutOfMemoryError:GCoverheadlimitexceeded发生的原因是,当前已经没有可用内存,经过多次GC之后仍然没能有效释放内存。

    2022年7月13日
    20
  • 红黑树和平衡二叉树区别[通俗易懂]

    红黑树和平衡二叉树区别[通俗易懂]红黑树和平衡二叉树区别如下:1、红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单。2、平衡二叉树追求绝对平衡,条件比较苛刻,实现起来比较麻烦,每次插入新节点之后需要旋转的次数不能预知。…

    2022年10月20日
    3
  • ❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】

    ❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】文章目录操作系统的发展史UnixMinixLinux操作系统的发展Minix没有火起来的原因Linux介绍Linux内核&发行版Linux内核版本Linux发行版本类Unix系统目录结构Linux目录用户目录命令行基本操作命令使用方法查看帮助文档helpman(manual)tab键自动补全history游览历史命令行中的ctrl组合键Linux命令权限管理列出目录的内容:ls显示inode的内容:stat文件访问权限修改文件权限:chmod修改文件所有者:chown修改文件所属组:chgrp文件.

    2022年6月1日
    28
  • Java我的高效编程之常用函数

    Java我的高效编程之常用函数

    2020年11月12日
    230
  • c#中的CultureInfo类[通俗易懂]

    c#中的CultureInfo类[通俗易懂]c#中的CultureInfo类2014年06月20日17:14:33DO_DAJIANGJUN阅读数:9912更多个人分类:C#/.NetFramework/.NetCore版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/XuWei_XuWei/article/details/32717259CultureInfo类位…

    2022年6月19日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号