YAZONG 我的开源

编译Elasticsearch6.1.4源码

 
0 评论0 浏览

一、软件环境

操作系统:win10 64bit
Elasticsearch 源码版本: 6.1.4
JDK版本: 1.8.0_151 64bit
Gradle版本: 4.3
Intellij Idea版本: 2018.1

#注:上述的安装版本在下述论述中都是一一对应的。

二、配置文件修改

2、1设置gradle-wrapper.properties

下载gradle-4.3-all.zip到源码elasticsearch-6.1.4\gradle\wrapper目录下。
修改elasticsearch-6.1.4\gradle\wrapper目录下gradle-wrapper.properties文件中的属性
“distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip”为
“distributionUrl=gradle-4.3-all.zip”

2、2修改MAVEN仓库地址

2、2、1源码目录文件

修改“elasticsearch-6.1.4\benchmarks\build.gradle”、
“elasticsearch-6.1.4\client\benchmark\build.gradle”中的属性”url”为阿里云的nexus私服地址,修改内容如下:

buildscript { repositories { maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4' } }

2、2、2全局配置文件

在USER_HOME/.gradle/下面创建新文件init.gradle,输入下面的内容并保存。
(比如我的USER_HOME为:C:\Users\XX)
(首次使用gradle的话,上述.gradle目录不会存在,可以先执行“三、编译源码”操作或者在DOS中执行“mkdir .gradle”操作)

allprojects{ repositories { def REPOSITORY_URL = 'https://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 } } }

三、编译源码

在DOS环境中进入源码根目录“elasticsearch-6.1.4”,把源码编译成IDEA工程,
执行“gradlew idea”命令,当编译成功后会显示“BUILD SUCCESSFUL”提示。

#编译失败,则按照DOS中的提示信息执行“gradlew idea -info或gradlew idea -debug”命令定位错误信息。

#如果在编译过程中特别慢,请务必执行“2、2修改MAVEN仓库地址”的操作。

四、IDEA导入elasticsearch-6.1.4

Screenshot20200104编译Elasticsearch614源码亚龙的博客.png

选择源码目录elasticsearch-6.1.4

Screenshot20200104编译Elasticsearch614源码亚龙的博客1.png

导入进来之后,还会再更新一会,更新完成后会显示下述内容

Screenshot20200104编译Elasticsearch614源码亚龙的博客2.png

五、配置启动elasticsearch的参数

5、1下载elasticsearch6.1.4的发行版本

https://www.elastic.co/downloads/past-releases选择elasticsearch下载6.1.4版本并解压。

Screenshot20200104编译Elasticsearch614源码亚龙的博客3.png

#注:源码文件名可能跟发行版本文件名一样,都是elasticsearch-6.1.4,不要混了。

5、2配置源码elasticsearch-6.1.4的目录文件

在“源码elasticsearch-6.1.4”中新建“home”目录,复制“发行版本elasticsearch-6.1.4”中的“config”、“modules”和“plugins”三个目录到“源码elasticsearch-6.1.4”的“home”目录中。

5、3设置启动类的VM OPTIONS参数

#启动类为:源码elasticsearch-6.1.4下core模块中的“org.elasticsearch.bootstrap.Elasticsearch”

#VM options为

-Des.path.conf=D:\XX\kaiyuan\elastic\elasticsearch\elasticsearch-6.1.4\home\config
-Des.path.home=D:\XX\elastic\elasticsearch\elasticsearch-6.1.4\home
-Dlog4j2.disable.jmx=true

Screenshot20200104编译Elasticsearch614源码亚龙的博客4.png

六、启动Elasticsearch6.1.4

6、1启动项

#启动类为:源码elasticsearch-6.1.4下core模块中的“org.elasticsearch.bootstrap.Elasticsearch”

#控制启动成功提示:
Screenshot20200104编译Elasticsearch614源码亚龙的博客5.png

6、2启动错误列表

异常:
ERROR: the system property [es.path.conf] must be set

解决方案:
设置“5、2配置源码elasticsearch-6.1.4的目录文件”中的“config”目录。
设置“5、3设置启动类的VM OPTIONS参数”的参数“-Des.path.conf”

异常:
Exception in thread “main” java.lang.IllegalStateException: path.home is not configured

解决方案:
设置“5、3设置启动类的VM OPTIONS参数”的参数“-Des.path.home”

异常:
2019-02-13 16:30:10,925 main ERROR Could not register mbeans java.security.AccessControlException: access denied (“javax.management.MBeanTrustPermission” “register”)
org.elasticsearch.bootstrap.StartupException: org.elasticsearch.bootstrap.BootstrapException: java.nio.file.NoSuchFileException: D:\workspace\kaiyuan\elastic\elasticsearch\elasticsearch-6.1.4\plugins\analysis-icu\plugin-descriptor.properties
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Unsupported transport.type []

解决方案:
设置“5、2配置源码elasticsearch-6.1.4的目录文件”中的“modules”目录。
设置“5、3设置启动类的VM OPTIONS参数”的参数“-Des.path.home”

异常:
2019-02-13 16:33:58,891 main ERROR Could not register mbeans java.security.AccessControlException: access denied (“javax.management.MBeanTrustPermission” “register”)
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: plugins directory [D:\workspace\kaiyuan\elastic\elasticsearch\elasticsearch-6.1.4\home\plugins] not found

解决方案:
设置“5、2配置源码elasticsearch-6.1.4的目录文件”中的“plugins”目录。

异常:
2019-02-13 16:35:39,750 main ERROR Could not register mbeans java.security.AccessControlException: access denied (“javax.management.MBeanTrustPermission” “register”)

解决方案:
设置“5、3设置启动类的VM OPTIONS参数”的参数“-Dlog4j2.disable.jmx”

异常:
版本不一致的异常信息(比如现在提示6.1.5和6.1.0不一致)
https://github.com/elastic/elasticsearch目录下选择“6.1”分支直接克隆并切换“6.1”的话,其实下载的是“6.1.5”版本,并不是“6.1.0”版本,而我在“5、1下载elasticsearch6.1.4的发行版本”说明中下载的也是“6.1.0”发行版本,所以导致的此问题。

解决方案:
https://github.com/elastic/elasticsearch/releases中6.1.X的最高源码版本是6.1.4没有6.1.5,
https://www.elastic.co/downloads/past-releases中6.1.X的最高发行版本也是6.1.4没有6.1.5,所以6.1.5是个没有的辣鸡版本,对应这两个目录下载其他6.1.X版本即可,注意6.1.1版本的源码目录中没有“gradle”目录,所以6.1.1版本的源码也不要使用。

7)其他异常

核实“一、软件环境”中的系统环境及版本信息。

七、其他版本

6.3.X版本编译和运行可参考下述链接(方法类似,只有个别异常和操作不一致)

http://laijianfeng.org/2018/08/%E6%95%99%E4%BD%A0%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95Elasticsearch-6-3-2%E6%BA%90%E7%A0%81/


http://www.54tianzhisheng.cn/2018/08/05/es-code01/


标题:编译Elasticsearch6.1.4源码
作者:yazong
地址:https://blog.llyweb.com/articles/2019/02/13/1578152782064.html