OpenGrok介绍「建议收藏」

OpenGrok介绍「建议收藏」2019独角兽企业重金招聘Python工程师标准>>>…

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

一、介绍 openGrok是用于代码在线阅读和搜索以及交叉引用的引擎使用Java语言编写的系统。它帮助你检索/索引和本地目录树导航。它可以理解各种编程语言的文件格式和各种配置管理工具。可以配合Mercurial/Git/SCCS/RCS/CVS/Subversion/Teamware/ClearCase/Perforce/Monotone和Bazaar。

二、安装环境 1. 最新的JDK 2. Servlet容器, 如Tomcat 8.x 3. Ctags 4. 代码版本管理工具 5. 如果自己编译,需要Ant/JFlex/Netbeans

三、使用 openGrok通常在servlet容器中运行(Tomcat)。 SRC_ROOT环境变量的值,是你工程代码的根目录。openGrok分析代码树并构建快速检索的索引,同时会解析代码在配置库中的不同版本的历史信息。解析过程中生成的数据会统一放在环境变量DATA_ROOT指定的目录中。

3.1 项目 OpenGrok中有项目的概念,一个项目对应SRC_ROOT下的一个目录,这个目录中文件是从配置库中检出的代码文件的工作区。 有了项目的概念一个OpenGrok应用可以处理多个项目,这样就不需要部署多个openGrok环境。一个应用可以处理多个代码配置库或项目。opengrok还可以处理项目或多个仓库的代码同步更新的脚本。 一个好的建议是为SRC_ROOT下的代码目录名称加上版本和分支的信息。如name-version-branch 实例: SRC_ROOT目录下可以有 openssh-head openssh-0.9.8-stable openssh-1.0.0-stable

每个目录都是从代码库中检出的工作区。在OpenGrok都被作为一个项目处理。

四、安装 4.1 Solaris平台使用*.p5p文件 4.1.0 安装 执行命令#pkg install –no-refresh -g /path/to/file/<package_name>.p5p opengrok 4.1.1更新 你可以通过*.p5p文件更新openGrop软件,更新的命令是 #pkg updatge –no-refresh -g /path/to/file/<package_name>.p5p ‘pgk://<publisher>/*’

五、配置 5.1 配置工程源码 在进行配置之前,首先需要从代码配置库中检出代码文件,启动opengrok应用。 在SRC_ROOT指定的目录下检出工程代码。openGrok不会自动更新检出的工程代码,需要你自己执行更新脚本。 如果是非分布式的配置管理工具(Subversion,CVS)可以不检出代码通过远程的方法来进行(不推荐使用此方式)。 如果要解析配置库的历史,需要安装配置管理工具,并给opengrok指定执行文件的所在的具体路径。 注意: opengrok 不处理连接文件。 如果你要忽略工程代码中的特定的目录及其子目录,可以在根目录中创建.opengrok_skip_history文件,将要忽略的目录写入其中。

5.2 使用opengrok shell脚本创建索引 在Linux系统用openGrok提供shell脚本来处理不同的任务,这些已在Solaris和其他Linux发行版本中验证过了。 5.2.1 应用部署 可以在其他用户下部署openGrok应用 #pfexec su – webservd $cd /usr/opengrok/bin $ ./OpenGrok deploy openGrok将在此目录下通过source.war进行部署。 5.2.2 DATA_ROOT目录配置 在openGrok生成索引的过程中会生成OpenGrok XML配置文件 configuration.xml并且会更新web应用。生成索引会花费很长时间,在这之后其可以自动更新。 第一次更新 $cd /usr/opengrok/bin SRC_ROOT默认是/var/opengrok/src $./OpenGrok index 否则使用 $./OpenGrok index <absolute_path_to_your_SRC_ROOT> 上面的命令将最新的索引信息更新如configurations.xml文件中。

openGrok定制化脚本,新增环境变量OPENGROK_INSTANCE_BASE默认是/var/opengrok如果opengrok的数据目录是/tank/opengrok 代码目录是/tank/source
$OPENGROK_VERBOSE=true OPENGROK_INSTANCE_BASE=/tank/opengrok ./OpenGrok index /tank/source
修改默认的配置文件
$ln -s /tank/opengrok/etc/configuration.xml /var/opengrok/etc/configuration.xml
更多的定制化脚本需要使用OPENGROK_CONFIGURATION这个环境变量。

5.2.3 局部索引更新

5.4 使用命令行更新索引 5.4.1 更新DATA_ROOT目录 opengrok有一些适合定期自动执行的脚本。opengrok.jar文件是可以直接执行的。 $java -jar opengrok.jar -s $SRC_ROOT -d $DATA_ROOT

5.4.2 部署和配置source.war 在source.war的web.xml文件中有如下参数可以修改 HEADER: HTML格式的文件,用于自定义欢迎页面和logo SRC_ROOT: 本地工程代码根目录的绝对路径 DATA_ROOT: 存放opengrok数据的目录绝对路径 5.4.3 路径描述 5.4.4 修改tomcat的配置参数 5.4.5 自定义ctags的配置

5.5 使用Java DB 存储历史缓存信息

转载于:https://my.oschina.net/hopeMan/blog/537550

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

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

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


相关推荐

  • phpstorm激活码注册码序列号_最新在线免费激活

    (phpstorm激活码注册码序列号)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    254
  • python中unittest框架_unittest接口自动化

    python中unittest框架_unittest接口自动化unittest简介参考:https://urlify.cn/e6rAr2为什么要使用unittest在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行。使用测试框架可以互不影响的用例执行及更灵活的执行控制。unittest特点•python自带的单元测试框架,无需安装;•用例执行互不干扰;•提供不同范围的setUp(测试准备)和tearDown(测试清理)方法;•

    2022年10月14日
    0
  • cer证书签名验证[通俗易懂]

    cer证书签名验证[通俗易懂]一个cer证书本身也是需要签名的,这是为了防止cer证书被篡改。证书有两种类型:1.根证书2.根证书签发的子证书。根证书比较特殊,它是自签名的。而其他子证书的签名公钥都保存在它的上级证书里面。可以用C#来做一些验证。首先是根证书的签名验证。//验证根证书签名X509Certificate2x509Root=newX

    2022年6月11日
    77
  • Thinkphp中的assign() 和 display()

    Thinkphp中的assign() 和 display()说到$this->assign()与$this->display()想必用过TP框架的都不陌生,那么今天我们就来说说他们的作用及其他用法。先说$this->assign()

    2022年7月1日
    24
  • python基础知识(一) 计算机概念,python的初步认识[通俗易懂]

    python基础知识(一) 计算机概念,python的初步认识[通俗易懂]Python基础知识计算基础知识1.cpu人类的大脑运算和处理问题2.内存临时存储数据断电就消失了3.硬盘永久存储数据4.操作系统调度硬件设备之间数据交互python的应用和历

    2022年7月5日
    17
  • js定时跳转网页_js 网页代码

    js定时跳转网页_js 网页代码效果如下:五秒跳完之后,转到百度的页面js代码如下:window.οnlοad=init;functioninit(){window.setTimeout(“tiaozhuan()”,5000);window.setInterval(“shijian()”,1000);//五秒后调用tiaozhuan}functiontiaozhuan(){location.replace(“http://www.baidu.com”);} functionshijian(){ var

    2022年8月12日
    4

发表回复

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

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