Eclipse導入Elasticsearch源碼的步驟,
基于Elasticsearch 6.2.2的源碼版本。
1.安裝JDK1.9
Elasticsearch 6.2.2需要JDK1.9編譯,否則后面步驟會報錯。
Java SE Downloads 地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.下載Elasticsearch源碼,并且切換到6.2.2分支
Elasticsearch github源碼托管地址:
https://github.com/elastic/elasticsearch.git
3.下載gradle的安裝包
查看elasticsearch\gradle\wrapper\gradle-wrapper.properties發現如下配置:
distributionUrl=https://services.gradle.org/distributions/gradle-4.5-all.zip
Elasticsearch 6.2.2需要安裝gradle-4.5,官方下載地址:
https://services.gradle.org/distributions/gradle-4.5-all.zip
注意如果在國內無法下載,則需要自己掛代理,或者百度搜索從其他渠道下載gradle-4.5-all.zip。
4.拷貝文件
將下載的gradle-4.5-all.zip包放到elasticsearch\gradle\wrapper目錄下,
確保和elasticsearch\gradle\wrapper\gradle-wrapper.properties在同級目錄,
然后修改elasticsearch\gradle\wrapper\gradle-wrapper.properties配置如下:
distributionUrl=gradle-4.5-all.zip
5.修改源碼Maven倉庫地址
由于國內無法下載國外倉庫的jar包,需要替換Maven地址,設置為本地或者國內可用的Maven倉庫。
elasticsearch\benchmarks\build.gradle
elasticsearch\client\benchmark\build.gradle
elasticsearch\distribution\build.gradle
elasticsearch\test\logger-usage\build.gradle
修改源碼中上面4個build.gradle文件里面的repositories-maven-url的值,
配置為可用的倉庫地址,修改示例如下:
buildscript {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
}
}
其中http://maven.aliyun.com/nexus/content/groups/public/是阿里云的Maven倉庫。
6.修改全局Maven倉庫地址
在USER_HOME/.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
}
}
}
其中USER_HOME/.gradle/是自己的gradle安裝目錄,示例值:C:\Users\Administrator.gradle,
如果沒有.gradle目錄,可用自己創建,或者先執行第7步,等gradle安裝后再回來修改。
上面腳本把url匹配到的倉庫都替換成了阿里云的倉庫,
如果有未匹配到的導致編譯失敗,可用自己仿照著添加匹配條件。
7.gradle編譯源碼
windows運行cmd,進入DOS命令行,
然后切換到elasticsearch源碼的根目錄,
執行如下命令,把elasticsearch編譯為eclipse工程:
gradlew eclipse
編譯失敗則按照錯誤信息解決問題,可用使用如下命令幫助定位問題:
gradlew eclipse -info
gradlew eclipse -debug
一般是Maven倉庫地址不可用導致jar包無法下載,從而編譯失敗,
此時請參考步驟5和6修改相關的倉庫地址。
編譯成功后打印日志:
BUILD SUCCESSFUL in 8m 30s
8.eclipse導入elasticsearch工程
依次點擊:
File: Import: Existing Projects into Workspace,
注意選中Search for nested projects,否則無法看到所有工程,
然后把出現的工程導入eclipse即可。
問題解決:
1.gradle內存不夠,進程無法啟動問題:
修改gradle.properties這個文件,在其中配置合適的JVM內存:
org.gradle.jvmargs=-Xmx512m
2.eclipse導入elasticsearch工程,部分工程不存在:
因為存在部分依賴包下載失敗,需要重新下載:
gradlew eclipse
反復執行上面的命令,直到所有的jar包下載成功,
反復在eclipse中refresh,clean對應的工程。
必要時刪除USER_HOME.gradle\caches目錄下相應jar包文件目錄,
重復執行gradlew eclipse下載對應的jar包。