要学习源码之前,肯定要进行Elasticsearch源码的编译:
前期准备
首先要下载源码:https://github.com/elastic/elasticsearch/releases,以最新的7.1版本为例,下载源码包:
安装JDK和Gradle:
JDK需要jdk12以上,Gradle5.2.1,我安装了JDK12和Gradle 5.2.1:
JDK和Gradle安装方法自行百度…
准备编译
因为源码里面使用是国外的jcenter下包,下载速度可能会比较慢,可以替换成国内的maven源:
我这里用了阿里的maven源:http://maven.aliyun.com/nexus/content/groups/public/
需要更换这个几个地方:
1.elasticsearch-7.1\buildSrc\build.gradle:
2.elasticsearch-7.1\distribution\packages\build.gradle:
3.elasticsearch-7.1\plugins\repository-s3\build.gradle:
同时在C:\Uesr\用户.gradle\下面创建init.gradle文件:内容如下,替换maven源:
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
编译
进入源码所在目录,执行gradle idea进行编译:
第一次执行有报错:
repository [maven] on project with path [:benchmarks] is using http for artifacts on [http://maven.aliyun.com/nexus/content/groups/public/]
Must specify license and notice file for project
从源码工程里面找到报错的来源:
第一个报错在:elasticsearch-7.1\buildSrc\src\main\groovy\org\elasticsearch\gradle\BuildPlugin.groovy第635行抛出了异常,不能用http开头的maven,将其注释掉即可:
第二个报错在:同样在这个文件,第908行,需要指定licenseFile抛出异常,将其注释掉即可:
继续进行编译,执行gradle idea,等待10多min编译成功:
直接点击打开编译目录下的elasticsearch-7.1.ipr文件,自动加载到idea里面:
使用idea进行编包:比如要编译server目录下的源码包,直接在Gradle下面创建任务,编译即可。
这时候你也可以开始修改源码,替换源码jar包了,开启你的Elasticsearch源码之旅。
over
有问题欢迎留言交流…good luck