1. 程式人生 > >ES5.6.2原始碼分析(1):準備工作

ES5.6.2原始碼分析(1):準備工作

1、gradle安裝

下載4.5版本,解壓後配置環境變數即可。

注:gradle安裝完成後, 為了加快依賴檔案的下載需要在使用者目錄中新建init.gradle檔案(讓全域性可見,build時會用到)。檔案的具體內容為:

目錄:C:\Users\admin.gradle

allprojects{
    repositories {
        def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
        def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
        def GRADLE_LOCAL_RELEASE_URL = 'https://repo.gradle.org/gradle/libs-releases-local'
        def ALIYUN_SPRING_RELEASE_URL = 'https://maven.aliyun.com/repository/spring-plugin'
        def CENTRAL_MAVEN_URL = 'http://central.maven.org/maven2'
        def GRADLE_PLUGIN_URL = 'https://plugins.gradle.org/m2'
        
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                    remove repo
                }
                if (url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                    remove repo
                }
                if (url.startsWith('http://repo.spring.io/plugins-release')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_SPRING_RELEASE_URL."
                    remove repo
                }
                
            }
        }
        maven {
            url ALIYUN_REPOSITORY_URL     
        }
        
        maven {            
            url ALIYUN_JCENTER_URL          
        }
        maven {            
            url ALIYUN_SPRING_RELEASE_URL
        }
        maven {
            url GRADLE_LOCAL_RELEASE_URL
        }
        
        maven {
            url CENTRAL_MAVEN_URL
        }
        
        maven {
            url GRADLE_PLUGIN_URL
        }
    }
    

}

如圖:

2、ES5.6.2原始碼下載

git地址:https://github.com/elastic/elasticsearch.git

  1. 在IDEA中使用git下載ES原始碼,預設下載master分支。待master分支下載完成後再終端視窗執行git命令切換到需要的版本,本文以5.6.2的tag為例, 切換分支命令:
git checkout v5.6.2
  1. 在ES原始碼的根目錄執行:
gradle idea

為IDEA生成相應的專案結構。

  1. 然後在手動匯入原始碼到IDEA中。

3、 原始碼目錄說明

根目錄下面的distribution目錄是打包目錄, 改目錄下有各種目錄,比如rpm、tar等等, tar目錄就是用於打tar包的,打包的時候執行tar下面的build.gradle指令碼。如圖:

4、 編譯

  1. 如果打tar包的話,CMD視窗路徑切換到es_src/distribution/tar目錄,第一次執行gradle命令:
gradle
  1. gradle命令執行完成後, 執行:
gradle build --stacktrace
  1. 生成的tar包目錄

es_src\distribution\tar\build\distributions