本地启动elasticsearch代码

        ElasticSearch是一个很不错的搜索引擎,值得我们去学习学习,不仅要学习其怎么使用,还需要去学习去源码,为了更好的学习源码,就需要本地运行其源码,本文的目的就是记录一下本地编译构建运行es源码。

准备工作

1. 源码下载,先去github上下载源码,我在搭建的时候是直接使用的master分支,此时的稳定版本是8.17.3。

2. 设置环境变量 GRADLE_USER_HOME ,指定一个路径即可,最好是一个干净的目录,如果是Linux系统,可以不用设置,默认指向的是 ~/.gradle 目录,即家目录下的 .gradle 目录(后面会说明其用意,如果你可以连接外网,这一步可以完全忽略)

3. 将代码导入集成开发工具,注意是使用 gradle 构建,gradle 可以不用下载安装都可以。如果在国内,导入后首次构建必然是失败的。

开始构建

1. 为了使构建速度稍微快一点,先将maven源设置为国内的镜像,比如阿里云,修改setting.gradle文件

pluginManagement {
  repositories {
    maven { url = 'https://maven.aliyun.com/repository/public' }  // 使用等号
    maven { url = uri('https://maven.aliyun.com/repository/google') }  // 或使用 uri()
    maven { url = 'https://maven.aliyun.com/repository/gradle-plugin' }
    gradlePluginPortal()
    mavenCentral()
  }
  includeBuild "build-conventions"
  includeBuild "build-tools"
  includeBuild "build-tools-internal"
}


#此配置需要配置在 plugins 后面
dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
  repositories {
    maven { url = 'https://maven.aliyun.com/repository/public' }  // 使用等号
    maven { url = uri('https://maven.aliyun.com/repository/google') }  // 或使用 uri()
    maven { url = 'https://maven.aliyun.com/repository/gradle-plugin' }
    mavenCentral()
  }
}

即使这么配置了,项目根目录下运行

./gradlew build

还是会报如下错,

注意:随着版本的迭代,下面错误提示中出现的内容可能会有所不同。

* What went wrong:
Unable to download toolchain matching the requirements ({languageVersion=21, vendor=Eclipse Temurin, implementation=vendor-specific}) 
from 'https://api.adoptium.net/v3/binary/version/jdk-21.0.6+7/windows/x64/jdk/hotspot/normal/eclip
se?project=jdk', due to: Could not HEAD 'https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6+7/OpenJDK21U-jdk_x64_windows_hotspot_21.0.6_7.zip'.

2. 报错的原因就是国内访问不了外网,下载不了指定的jdk版本,如果你可以访问外网,可能不会遇到这样的问题,如何解决,找国内的镜像地址,比如清华镜像,然后直接去下载对应的版本。下载完成后,还记得准备工作中 GRADLE_USER_HOME 环境变量对应的目录吗?此时进入到这么目录下,会有一个jdks的目录,然后将下载的jdk压缩包直接丢进去,上面的问题就能解决了。

注意:如果jdk压缩包丢进去还是提示下载失败,检查文件目录下是否存 CACHEDIR 文件,如果存在则直接删除即可。

3. 编译到后面的时候还会存在docker相关的问题,如果你安装了docker,应该不会出现问题,如果没有安装,在如果直接使用 ./gradlew build 构建应该会报错,需要在编译的时候跳过docker相关的任务:

./gradlew build -x :distribution:docker:buildAarch64WolfiDockerImage -x :distribution:docker:buildAarch64CloudEssDockerImage -x :distribution:docker:buildAarch64DockerImage -x :distribution:docker:buildWolfiDockerImage -x :distribution:docker:buildCloudEssDockerImage -x :distribution:docker:buildDockerImage -x :distribution:docker:buildAarch64IronBankDockerImage -x :distribution:docker:buildIronBankDockerImage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值