1蝙茶、git 下載源碼 (可fork 到自己本地倉庫 后續(xù)閱讀源碼修改可提交記錄)
https://github.com/elastic/elasticsearch.git
2宵呛、切換對應(yīng)分支
3茄厘、導(dǎo)入idea
4、配置gradle 的 jdk版本 及項(xiàng)目jdk版本 ----重要
jdk11 就可以滿足
image.png
- 配置idea 配置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
}
}
}
5稠茂、下載相應(yīng)gradle/wrapper/gradle-wrapper.properties 中的gradle 版本
- 放入gradle/wrapper 目錄中
- 更改distributionUrl 為gradle 版本
gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=gradle-6.6.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionSha256Sum=11657af6356b7587bfb37287b5992e94a9686d5c8a0a1b60b87b9928a2decde5
6柠偶、編譯
7、下載發(fā)行版本
https://elasticsearch.cn/download/
- 配置es.path.conf睬关、es.path.home诱担、java.security.policy
es.path.conf 對應(yīng)下載發(fā)行版本目錄/config
es.path.home 對應(yīng)下載發(fā)行版本目錄
java.security.policy 如下
grant {
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission java.lang.RuntimePermission "createSecurityManager";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete";
permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
permission java.util.PropertyPermission "*", "read,write";
permission javax.security.auth.AuthPermission "getSubject";
permission javax.security.auth.AuthPermission "modifyPrincipals";
permission javax.security.auth.AuthPermission "getLoginConfiguration";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
permission java.lang.RuntimePermission "accessClassInPackage.sun.nio.ch";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "loadLibrary.jaas_unix";
permission java.lang.RuntimePermission "shutdownHooks";
permission java.lang.RuntimePermission "createSecurityManager";
permission java.lang.RuntimePermission "closeClassLoader";
};
配置vm環(huán)境
-Des.path.conf=發(fā)行版本路徑\config
-Des.path.home=發(fā)行版本路徑
-Dlog4j2.disable.jmx=true
-Djava.security.policy=自定義policy位置
遇到的問題:
redirect to a secure protocol (like HTTPS) or allow insecure protocols
原因 :替換阿里云鏈接 協(xié)議http開頭
gradle 7.0 以上版本 對協(xié)議有要求 故 我退換成了 6.6.1版本-
org/elasticsearch/plugins/ExtendedPluginsClassLoader
源碼的server模塊下的 build.gradle 中82行 compileOnly project(':libs:elasticsearch-plugin-classloader') ,將compileOnly改為compile即可
compileOnly是指該依賴只在編譯時有效,運(yùn)行時無效电爹。
image.png
git分支只有大版本 沒有小版本
切到相應(yīng)大版本后 可以在 org.elasticsearch.Version 類中更改自己需要的小版本(需要跟上述下載的發(fā)行版本一致)
image.png