環境:
git
jdk12 https://jdk.java.net/java-se-ri/12 解壓 配置環境變量
gradle5.2.1 https://gradle.org/next-steps/?version=5.2.1&format=all 安裝 配置環境變量
idea 2019
1.源碼地址:https://github.com/elastic/elasticsearch
2.git clone https://github.com/elastic/elasticsearch
3.git tag -l
4.git checkout v6.7.2
5.源碼gradle配置
用戶目錄./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 } } }
6.源碼編譯:
gradle 安裝包拷貝至源碼根目錄/gradle/wrapper下
並修改gradle-wrapper.properties文件內容為:
distributionUrl=gradle-5.2.1-all.zip
gradlew idea
進入源碼根目錄doc環境中執行./gradlew idea編譯源碼 (聯網操作)
嘗試過java11和java13均失敗
本地有裝hadoop 編譯失敗
7.源碼打包:未完成
8.idea源碼調試
idea -》file -》project from existing sources -》源碼根目錄 -》ok -》Import project from external model -》 Gradle -》auto-import office work gradle選到用戶目錄
ERROR: the system property [es.path.conf] must be set
下載同版本release包解壓
源碼根目錄下創建home文件夾
release包的config目錄拷貝至上訴文件夾
idea中做如下配置:
VM options 配置中添加
-Des.path.conf=D:\code\code-zhx\elasticsearch\home\config
Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
VM options 配置中添加
-Des.path.home=D:\code\code-zhx\elasticsearch\home
ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
VM options 配置中添加
-Dlog4j2.disable.jmx=true
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: modules directory [D:\code\code-zhx\elasticsearch\home\modules] not found
release版本的config目錄中的modules文件夾放在源碼根目錄下建的home文件夾
java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ExtendedPluginsClassLoader
org.elasticsearch.bootstrap.StartupException: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
源碼根目錄 /home/config下新建java.policy文件
並配置如下內容:
grant { permission java.lang.RuntimePermission "createClassLoader"; };
並在VM options 配置中添加
-Djava.security.policy=D:\code\code-zhx\elasticsearch\home\config\java.policy