Intellij Idea 運行Elasticsearch源碼 v6.0.0

一、環境
OS:windows 10
IntelliJ IDEA 2018.2.1 (Ultimate Edition)
elasticsearch 源碼:git clone https://github.com/elastic/elasticsearch.git
elasticsearch 編譯版:https://www.elastic.co/downloads/past-releases/elasticsearch-6-0-0
jdk:1.8.0_181
maven:v3.3.9 http://mirrors.shu.edu.cn/apache/maven/maven-3/
gradle:v4.3 https://services.gradle.org/distributions/
(用過gradle4.3.1和最新的gradle4.10編譯,會提示jcenter或者maven倉庫gradle-logging-4.3.1/4.10不存在,看倉庫確實不存在)

二、編譯
1、更換阿里的maven倉庫,加速jar包下載。在用戶根目錄.gradle文件夾(例如我的路徑是C:\Users\zhang\.gradle)下添加文件init.gradle,內容如下(要替換的源可根據需要修改):

allprojects{
  repositories {
    def my_repo = 'http://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')) {
            remove repo
          }
       }
    }
    maven {
      url my_repo 
    }
  }
}

2、簽出v6.0.0版本的源碼
elasticsearch源碼根目錄運行命令:git checkout -b v6.0 v6.0.0
3、開始編譯:gradle idea
4、導入idea,File->New->Project From Existing Sources->Import As Gradle Project->Done

三、配置
1、新建Application,配置參數:
Main class:org.elasticsearch.bootstrap.Elasticsearch
VM options:
-Des.path.home=D:\GithubProjects\elasticsearch-6.0\core -Des.path.conf=D:\GithubProjects\elasticsearch-6.0\core\config
Working directory:D:\GithubProjects\elasticsearch-6.0
Use classpath of module:core_main

如下圖所示:
vm參數配置
2、拷貝需要的模塊
將對應編譯版的config modules plugins目錄拷貝到v6.0源碼的core目錄下,包結構如下圖所示:
包結構

四、運行
遇到的錯誤及解決方法:
1、ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\java.policy文件中添加權限permission javax.management.MBeanTrustPermission “register”;(路徑修改成本機環境的jdk路徑)

2、java.lang.StringIndexOutOfBoundsException: String index out of range: -1

org.elasticsearch.bootstrap.Security類 static Policy readPolicy(URL policyFile, Set codebases) 方法 esVersion變量更改:
由 final String esVersion = Version.CURRENT + (Build.CURRENT.isSnapshot() ? “-SNAPSHOT” : “”);
改爲 final String esVersion = Version.CURRENT + (Build.CURRENT.isSnapshot() ? “” : “”);

五、驗證
http://localhost:9200/


{
  "name" : "h1euXqN",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "T7ELiSqcRdKN7teMqAZHfQ",
  "version" : {
    "number" : "6.0.0",
    "build_hash" : "Unknown",
    "build_date" : "Unknown",
    "build_snapshot" : true,
    "lucene_version" : "7.0.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章