工欲善其事,必先利其器之—使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据最佳实践-基于Spark的ETL开发

    大数据最佳实践-基于Spark的ETL开发目录数据同步RDMBStoRDMBS数据同步HivetoHive数据同步RDBMStoHive数据同步hivetordmbsHDFS数据监控数据同步filetohbase数据同步RDMBStoRDMBSpackagecom.sutpc.bigdata.syncimportjava.util.Propertiesimportorg.apache.log4j.{Level,Logger}importorg.apache.spark.sql.Spark

    2022年5月27日
    39
  • MySQL 中NULL和空值的区别?

    做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!01 小木的故事作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值。那你知道它们有什么区别吗?学不动了,也不想知道它们有什么区别。大兄弟,不行啊,要面试!前些天我的好朋友小木去应聘工作,他面试完回来和我聊天回味了一道他的面试题。面试官:你有用过MyS…

    2022年2月28日
    45
  • 代价函数的意义

    代价函数的意义我们来复习上一节的知识:假设函数:hθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1xhθ​(x)=θ0​+θ1​x参数:θ0,θ1\theta_0,\theta_1θ0​,θ1​代价函数:J(θ0,θ1)=12m∑i=1i=m(h(xi)−yi)2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^{i=m}(h(x^i)…

    2022年5月10日
    52
  • Arcgis地图切片以及发布

    Arcgis地图切片以及发布Arcgis 地图切片以及发布过程简介地图切片地图切片主要是为了提高地图的浏览速度 可以在地图发布之前首先进行切片 也可以在地图发布时直接利用缓存切片 后者在发布大型地图时不建议采用 速度很慢 1 1 利用工具 arcgis gt Datamanageme gt Tilecache gt Generatetile 生成 xm

    2025年8月13日
    4
  • tcpdump抓包命令详解_tcpdump抓udp包命令详解

    tcpdump抓包命令详解_tcpdump抓udp包命令详解linux抓包-tcpdump命令:enp4s0f0—ifconfig—>网卡名称-s0—->不限制抓包的大小port25228—->只抓取服务器上25228端口的数据流量-whk2.pcap—>保存的文件名称-v—>显示抓包的大小数字

    2022年8月20日
    8

发表回复

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

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