最近在研读《Elasticsearch源码解析与优化实战》,研究下elasticsearch(以下简称ES)各模块的源码,书中的版本是6.1.2
虽然在github可以直接clone源码,但为了获取最完整的体验,决定跟着书中的方法从构建开始
1. 访问https://github.com/elastic/elasticsearch/releases,选择相应的版本下载,我选择的是tar.gz格式
2. 下载完成后,解压缩,然后进入相应的目录, cd elasticsearch-6.1.2(ES全部版本号其实由4位数字组成,主版本.次版本.修正版本.构建版本)
3. 按照书中写到的,执行 ./gradlew assemble -Dbuild.snapshot=false (ES最早是由Maven构建的,后来改成了Gradle)
4. 这一步准备跳坑,构建时报错如下:
分析原因可能是java版本过低,(有一篇文章说实际上在当前写作时间Java8运行ES足够了,但是构建当前写作时间的最新版本ES需要至少Java10版本)
5. 转到Oracle官网下载Java12,https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html(这一步使用brew cask install java也可以),选择的是dam格式,下载完毕后,双击安装
6. 继续跳坑,构建是报错如下:
分析原因可能是是Java12与本机安装的Gradle版本不兼容,需要升级Gradle至5.3.1
7. 转到Gradle官网https://gradle.org/releases/ 下载Gradle,zip格式
8. 配置Gradle的环境变量,这一步需要注意Gradle的版本变化可能带来的相应影响
9. 接着跳坑。。尽管经历了以上N个步骤仍然build失败。。。(报2个异常)
10. 卸载Gradle5.3.1和Java12,并在.bash_profile中配置Java环境变量 <== 重点!!!;再次执行./gradlew assemble -Dbuild.snapshot=false 命令。终于Build成功!(High Five击掌~)
11. 在相同目录,执行gradle idea,为在IDEA中导入项目做准备;如下:成功
12. 在IDEA Welcome界面 设置Project Structure
13. 设置完成后,回到Welcome界面,选择Import Project,选择ES对应的目录,点击Open;在下一个界面选择Gradle
14. 在下一个界面确认工程名称Gradle和Java的版本
15. 点击Finsh,完成导入,进入IDEA
16. Gradle守护进程开始自动同步,如下:
看到了此ES版本使用的是Lucene7.1.0 (当前写作时间最新版是8.0.0)。第一次看Lucene源码还是6.0.0的时候,怀念。。
17. 历时6分半左右,同步完成~ 准备开启源码旅程!