【Elasticsearch源码】-源码编译

要学习源码之前,肯定要进行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

发布了28 篇原创文章 · 获赞 61 · 访问量 8665

猜你喜欢

转载自blog.csdn.net/wudingmei1023/article/details/103988543