Elasticsearch源码调试环境配置
本文介绍一下Elasticsearch在本地IDE中的调试配置,方便源码阅读和开发。
重要的选择
在开始搭建环境之前,需要作出两个重要的决定:
- Elasticsearch什么版本
- 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
1 |
brew install gradle |
2. 安装Java 9,到Java官网下载安装
PS: 在master分支上(当前是v7.0.0 alpha)要强制Java9,这里就先装了~
3. 下载代码,切换到一个比较新的Tag,当前最新的是v6.1.3
1 2 |
git clone https://github.com/elastic/elasticsearch.git git checkout v6.1.3 |
4. 下载依赖和生成IDEA所需要的项目配置
1 |
gradle idea |
5. 设置JAVA_HOME
Elasticsearch项目的编译和运行都需要环境变量显示定义环境变量JAVA_HOME,具体原因见这里,如果不知道在哪的话可以运行 /usr/libexec/java_home 来看下。
6. 编译
1 |
gradle build -x test -x integTest |
(-x test -x integTest可以跳过漫长的单元测试和继承测试)
如果使用的是Java 9,会提示JAXB Class缺失,因为这个东西在Java 9中被废弃了,如果需要使用,可以手动添加,在gradle.properties中添加:
1 2 3 4 5 |
dependencies { compile 'javax.xml.bind:jaxb-api:2.3.0' compile 'com.sun.xml.bind:jaxb-core:2.3.0' compile 'com.sun.xml.bind:jaxb-impl:2.3.0' } |
导入IDEA
1. 导入,直接open project即可
2. 在Run >> Edit Configuration中添加JVM选项:
|