Elasticsearch源碼分析 - 源碼構建

本篇文章首發於頭條號Elasticsearch源碼分析 - 源碼構建,歡迎關注個人頭條號和微信公衆號「大數據技術和人工智能」(微信搜索bigdata_ai_tech)獲取更多幹貨,也歡迎關注個人CSDN博客java


本篇介紹一下如何從源碼構建Elasticsearch,構建Elasticsearch源碼是學習和研究Elasticsearch源碼的基礎,有助於更好的瞭解Elasticsearch。node

環境準備

環境/軟件 版本 備註
OS Ubuntu 14.04 LTS
Gradle 5.4
Java 9.0.4+11 Oracle Corporation 9.0.4 [OpenJDK 64-Bit Server VM 9.0.4+11]
Elasticsearch 6.2

從源碼構建Elasticsearch須要注意下面幾個問題:

一、從源碼構建Elasticsearch須要使用Gradle,所以須要確認下是否安裝了gradle,能夠參考官網安裝文檔安裝,安裝步驟以下:git

mkdir /opt/gradle
unzip -d /opt/gradle ./下載/gradle-5.4-bin.zip
ls /opt/gradle/gradle-5.4
#添加環境變量
vi ~/.bashrc
#在 ~/.bashrc 文件下面加上這句
export PATH=$PATH:/opt/gradle/gradle-5.4/bin
#使新增的環境變量即時生效
source ~/.bashrc
#檢查 gradle 是否安裝配置成功
gradle -v

二、Elasticsearch編譯和運行時所要求的JDK版本是不同的,以V6.2版本爲例,Runtime要求最低JDK8,Compile要求最低JDK9。不一樣版本的Elasticsearch應該如何肯定所需JDK運行時和編譯的版本呢?能夠在Elasticsearch的源碼裏找到,以下:github

/*
 * Elasticsearch <= v6.3
*/
//代碼文件位置:buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
static final JavaVersion minimumRuntimeVersion = JavaVersion.VERSION_1_8
static final JavaVersion minimumCompilerVersion = JavaVersion.VERSION_1_9
/*
 * Elasticsearch >= v6.4
*/
//代碼文件位置:buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
//這段代碼對應的配置文件分別是下面這兩個:
//buildSrc/src/main/resources/minimumCompilerVersion
//buildSrc/src/main/resources/minimumRuntimeVersion
JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(
        BuildPlugin.class.getClassLoader().getResourceAsStream("minimumRuntimeVersion").text.trim()
)
JavaVersion minimumCompilerVersion = JavaVersion.toVersion(
        BuildPlugin.class.getClassLoader().getResourceAsStream("minimumCompilerVersion").text.trim()
)

三、在終端執行構建操做前建議把終端改成bash,否則可能會有點問題。shell

開始構建

具體步驟以下:json

#下載源碼
git clone https://github.com/elastic/elasticsearch.git
#進入源碼目錄
cd elasticsearch
#切換到一個穩定分支
git checkout 6.2
#構建源碼
./gradlew assemble

看到下面輸出表示構建成功了。瀏覽器

BUILD SUCCESSFUL in 10m 15s
505 actionable tasks: 505 executed

測試

構建成功後就能夠啓動Elasticsearch了,以下:bash

#在源碼目錄下執行
./gradlew run

啓動成功後瀏覽器打開127.0.0.1:9200顯示以下:微信

{
  "name" : "node-0",
  "cluster_name" : "distribution_run",
  "cluster_uuid" : "E3qa7TIkTTGNP32WizSyXg",
  "version" : {
    "number" : "6.2.5",
    "build_hash" : "e38fe8a",
    "build_date" : "2019-04-25T01:27:03.655047Z",
    "build_snapshot" : true,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
相關文章
相關標籤/搜索