Elasticsearch源码调试环境配置

本文介绍一下Elasticsearch在本地IDE中的调试配置,方便源码阅读和开发。

重要的选择

在开始搭建环境之前,需要作出两个重要的决定:

  1. Elasticsearch什么版本
  2. Java要什么版本

比较好的组合是:Elasticsearch 6.x及以下配Java 8,Elasticsearch 7.x配Java 9。

这是因为Elasticsearch 6.x使用了一些在Java 9中被废弃的包,这时候如果用Java 9来编译的话需要一些额外配置(后面会提到一点点)。而Elasticsearch 7.x是强制需要Java 9来编译的。

虽然可以做一些workaround让build跑起来,但是后面还会遇到一些很难受的坑(test过不去之类的),所以强烈建议使用Java 8编译Elasticsearch 6.x。

源码准备

1. 安装gradle

2. 安装Java 9,到Java官网下载安装

PS: 在master分支上(当前是v7.0.0 alpha)要强制Java9,这里就先装了~

3. 下载代码,切换到一个比较新的Tag,当前最新的是v6.1.3

4. 下载依赖和生成IDEA所需要的项目配置

5. 设置JAVA_HOME

Elasticsearch项目的编译和运行都需要环境变量显示定义环境变量JAVA_HOME,具体原因见这里,如果不知道在哪的话可以运行 /usr/libexec/java_home 来看下。

6. 编译

(-x test -x integTest可以跳过漫长的单元测试和继承测试)

如果使用的是Java 9,会提示JAXB Class缺失,因为这个东西在Java 9中被废弃了,如果需要使用,可以手动添加,在gradle.properties中添加:

导入IDEA

1. 导入,直接open project即可

2. 在Run >> Edit Configuration中添加JVM选项: