elasticsearch6.0.0 源碼本地環境搭建步驟如下:
- 1、資源准備
ElasicSearch版本:6.0.0: https://github.com/elastic/elasticsearch
安裝jdk(jdk1.8以上,本人用的是1.8.0_131)
安裝gradle(3.3以上,本人用的是4.3.1) 需要安裝環境變量網上有好多,下載地址 http://services.gradle.org/distributions/
- 2、上面資源都准備好了后 ,開始
1)配置軟件包倉庫源地址 (此步驟因為需要從包倉庫jcenter或者apache的maven庫下載依賴額所有jar,耗時長,使用國內的倉庫源,節省時間)
在C:\Users\用戶\.gradle下建立init.gradle文件
編輯文件內容如下:
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://repo.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 } }
}
2)編輯${elasticsearch源碼根目錄}\distribution\build.gradle文件,藍色部分替換為如下。
buildscript {
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
}
dependencies {
classpath 'com.netflix.nebula:gradle-ospackage-plugin:3.4.0'
}
}
3)gradle 安裝成功后 打開cmd控制台 進入elasticsearch源碼根目錄,
執行gradle idea。(idea導入源碼前,必須進行此步驟,否則會報錯)
4)IDEA導入工程,導入的時候需要設置gradle_home,配置為gradle的安裝根目錄。
勾選Offline work(否則會連到官網私服下載,會超級慢)和Use local gradle distribution。
gradle 項目導入idea碰到的問題:
導入idea時候執行gradle idea,可以把項目編譯成idea項目,但后續導入idea還是報錯,
提示jdk版本只能是1.8或以上,如果是這樣,檢查環境變量中的jdk配置是否正確
5)編譯代碼 在core下 的jar 編譯

6)啟動elasticsearch:在 core下org.elasticsearch.bootstrap.Elasticsearch 這個類 右鍵運行main方法
報錯 啟動包es.path.conf未設置

解決方法 :配置jvm參數

//這個是自己項目里面distribution 下的路徑 -Des.path.home=F:\es_code\elasticsearch-6.0\distribution\src\main\resources -Des.path.conf=F:\es_code\elasticsearch-6.0\distribution\src\main\resources\config
// 繼續啟動 之后報錯 2017-12-06 19:18:42,999 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
解決辦法

//在里面加上 -Dlog4j2.disable.jmx=true
報錯 Unsupported transport.type
解決辦法:把相同版本的es二進制安裝包中modules目錄(\distribution\src\main\resources\modules目錄內容拷過來)下內容拷貝過來。
報錯 stirng index out of range -1
跟蹤源碼,發現如下原因:在編譯的時候,編譯打包版本信息不一致造成的,這樣index版本號就出錯了。
解決方法 修改 core 下面的 org.elasticsearch.Build.java 74行,
// isSnapshot = true; isSnapshot = false;
注:有的時候有可能下載下來的源碼 打包的版本是6.1.0-snapshot 本人就碰到了這種情況下載的是6.0的源碼但是在編譯的 時候發現 6.1.0-snapshot 是這個版本
改完后有可能還是不行,跟蹤源碼發現 org.elasticsearch.Build.java

主要做驗證這塊是Version里面的版本信息,修改下這個里面的當前版本就行了。改成自己目前的版本信息,再次啟動OK。
