OpenGrok中多项目配置方法

OpenGrok是一个非常好用的代码浏览和查询工具。也可以用来管理多个不同的项目。但是由于不能按照项目分别index,在管理多个大型项目时会导致索引很慢(索引一个AOSP的完整项目需要2~3个小时)。这时,自然而然能想到的方法是将多个项目分别部署到不同的webapp中。下面简单记录下具体步骤:

创建新的WEBAPP

首先复制一个现有的webapp(一般是source.war),命名成项目的webapp

mv [path_to_opengrok]/source.war [path_to_tomcat]/webapps/[prj_name].war

然后修改 WEB-INF/web.xml 中的 CONFIGURATIONConfigAddress 字段。

Extract 文件

cd [path_to_tomcat]/webapps;

unzip [prj_name].war WEB_INF/web.xml

  • 将CONFIGURATION中的默认地址 /var/opengrok/etc/configuration.xml 修改成 /[DATA_PATH]/[prj_name]/etc/configuration.xml
  • 将ConfigAddress中默认的端口 2424 替换成其他端口(2425,2426…)

保存后写回war

zip -u [prj_name].war WEB-INF/web.xml;
rm -rf WEB-INF;

 

增加对webapp名字的支持

在默认的<> 脚本中,不支持除了source以外的webapp名字。因此,我们还必须简单修改一下这个脚本以增加对定制webapp name的支持。

我们增加一个新的环境变量,OPENGROK_WEBAPP_NAME。如果没有在外部定义,则还是使用默认的 “source”

OPENGROK_INSTANCE_BASE=”${OPENGROK_INSTANCE_BASE:-/var/opengrok}”
+++ OPENGROK_WEBAPP_NAME=”${OPENGROK_WEBAPP_NAME:-source}”
LOGGER_CONFIG_FILE=”logging.properties”

在启动 java -jar opengrok.jar的时候加入 -w参数

StdInvocation()
{
${DO} ${JAVA} ${JAVA_OPTS} ${PROPERTIES} \
……
-s ${SRC_ROOT} -d ${DATA_ROOT} \
+++ -w ${OPENGROK_WEBAPP_NAME} \
“${@}”
}

索引项目

当需要索引非默认项目时,先设置 OPENGROK_INSTANCE_BASE 和 WEBAPP_CONFIG_CFGADDR后做索引

export OPENGROK_INSTANCE_BASE=/[DATA_PATH]/[prj_name];

export WEBAPP_CONFIG_CFGADDR=localhost:[port_for_config] ; (2425, 2426….)

export OPENGROK_WEBAPP_NAME=[prj_nam,e]

./Opengrok index [path_to_source] ;

Trouble-shoot

对于大型项目来说,索引过程通常很久,需要2~3个小时。但有时,也会出现索引了4,5个小时也没有完成的情况。这个时候,我们可以到 /[DATA_PATH]/[prj_name]/log 下查看下输出的log,确保索引过程仍在正常进行。如果发现过程已经停滞了一段时间,很有可能是ctags出现了问题,可以尝试将当前的ctags进程kill掉(可能会导致某些文件的索引丢失),让opengrok继续索引。

One thought on “OpenGrok中多项目配置方法”

Leave a Reply

Your email address will not be published. Required fields are marked *