在IDEA调试Solr/Lucene代码
一、环境
Windows
JDK 1.8
IDEA --不要太低版本即可
二、下载
1.Solr/Lucene代码
最新版本在这里下载:
https://solr.apache.org/downloads.html
历史版本在这里下载:
https://archive.apache.org/dist/lucene/solr/
下载新版的源代码包,例如目前最新的是solr-8.11.1-src.tgz
2.Apache Ant
https://ant.apache.org/bindownload.cgi
下载新版的binary运行包,例如目前最新的是apache-ant-1.10.12-bin.zip
3.Apache Ivy
https://ant.apache.org/ivy/download.cgi
下载新版的binary运行包,例如目前最新的是apache-ivy-2.5.0-bin.zip
三、安装和编译
1.安装Ant
(1) 解压binary运行包到C盘,改名叫ant,完整路径为c:\ant
(2) 打开环境变量:右键计算机 -> 属性 -> 高级系统设置 -> 环境变量
(3) 新增ANT_HOME属性,值为c:\ant
(4) 编辑Path属性,在末尾加入%ANT_HOME%\bin
(5) 编辑CLASSPATH属性,在末尾加入%ANT_HOME%lib(一般可忽略该步骤)
(6) 测试一下:打开命令行,输入ant -version
* Path要注意首字母大写,虽然小写也能用,但部分场景会导致报错。
* 追加的值用;隔开。
2.安装Ivy
(1) 解压binary运行包到C盘,改名叫ivy,完整路径为C:\ivy(一般可忽略该步骤)
(2) 打开环境变量:右键计算机 -> 属性 -> 高级系统设置 -> 环境变量(一般可忽略该步骤)
(3) 新增IVY_HOME属性,值为C:\ivy(一般可忽略该步骤)
(4) 把C:\ivy目录下的所有文件复制到C:\ant\lib目录
* 也可以直接用命令进行安装(但版本不一定是最新的):
ant ivy-bootstrap
3.编译Solr/Lucene
(1) 解压源代码包到E盘(也可以放C盘),完整路径为E:\solr-8.11.1
(2) 打开命令行:开始 -> 运行 -> cmd
(3) 在命令行进入E:\solr目录,把Solr源代码编译成IDEA项目
e:
cd solr-8.11.1
ant idea
* 如果提示C:\User\xxx\.ant\lib does not exist,就把C:\ivy目录下的所有文件复制到C:\User\xxx\.ant\lib\目录
* 如果C:\User\xxx\目录下没有\.ant\lib\文件夹,手动创建即可
* 其中xxx是你的用户名,例如C:\User\clotho\.ant\lib
* 编译过程中ivy会从maven或github下载依赖包,由于国内访问这2个网站不稳定,所以有可能会报关于网络请求的错误,请重新多试几次ant idea命令,或换个网络
(4) 另外,还需要进入/solr-8.11.1/solr/目录中编译服务端
cd solr
ant server
* 不执行此步骤的话,在创建collection时会报找不到/dist/目录的错误,就是solrconfig.xml中配置的${solr.install.dir:../../../..}/dist/
4.打开项目
编译完成(提示BUILD SUCCESSFUL)后,用IDEA打开该项目。如果提示找不到String类型之类的,则执行以下操作:
File -> Project Structure -> Project Settings -> Project -> Project SDK -> 选择之前配好的JDK
5.本地调试--运行服务端
(1) 修改路径
打开solr/solrj/src/test/org/apache/solr/client/solrj/StartSolrJetty.java文件,修改main方法的其中两行,原来的代码是:
//System.setProperty("solr.solr.home", "../../../example/solr"); bb.setWar("webapp/web");
修改里面的路径。例如,假定solr的根目录在E:/solr-8.11.1,就把代码改成:
String solrServer = "e:/solr-8.11.1/solr/server"; System.setProperty("solr.solr.home", solrServer + "/solr"); bb.setWar(solrServer + "/solr-webapp/webapp");
* 不同版本的Solr的子路径有点区别,请根据实际版本修改子路径
(2) 点击调试或运行StartSolrJetty.java
(3) 用浏览器访问http://localhost:8983/solr/
三、关于ElasticSearch
跟Solr的操作步骤类似,只是把Ant换成了Gradle,就是用gradle idea或gradlew idea命令进行编译,编译后用IDEA打开
* 已安装好Gradle的话用gradle idea,没安装过Gradle的用gradlew idea
参考资料:
https://www.cnblogs.com/hapjin/p/13223116.html
http://qianjiasong.com/post/solr-debug-idea-build/