- 1、下载源码
- 2、Gradle编译打包
- 3、在IDEA运行
- 3.1、IDEA打开build.gradle
- 3.2、修改Gradle JVM
- 3.3、运行
elasticsearch-7.17.3.zip源码:github elastic下载,elastic官网下载
JDK/OpenJDK 17:可用jvm-and-jdk,本文使用Liberica JDK 17.0.3
gradle-7.4.2-all.zip:gradle官网, gradle-7.4.2-all.zip
JDK17和gradle-7.4.2-all安装配置,本文省略,需要配置好PATH环境变量。
以前写过idea导入Elasticsearch 7.10.2源码和编译运行,不过7.17.3源码目录与7.10.2不同,并增加3个与构建相关的项目,作为复合构建包含在Elasticsearch构建中,相关说明BUILDING.md
build-conventions
用于所有elasticsearch项目的构建约定。
build-tools
包含了为第三方elasticsearch插件作者发布的构建逻辑,提供以下插件:
elasticsearch.esplugin -gradle插件,用于构建elasticsearch插件。
elasticsearch.testclusters -gradle插件,用于在构建中设置es集群进行测试。
这个项目是作为elasticsearch版本的一部分发布的,可以通过org.elasticsearch.gradle:build-tools:<versionNumber>访问。 由elastic维护的elasticsearch-hadoop项目也使用这些构建工具。
build-tools-internal
包含所有与elasticsearch项目相关的构建逻辑,这些构建逻辑不打算与其他内部或外部项目共享。
下载elasticsearch-7.17.3.zip,并解压在D:\dev\es\elasticsearch-7.17.3,目录如下
Elasticsearch 7.17.3源码的README文件,提供的编译打包命令:
gradlew localDistro # 为本地系统构建一个发行版本
gradlew :distribution:archives:linux-tar:assemble #
gradlew :distribution:archives:darwin-tar:assemble #
gradlew :distribution:archives:windows-zip:assemble #
gradlew assemble # 为所有支持系统构建发行版本
命令行下输入命令进行编译
gradlew localDistro
然后进入漫长的编译等待,在编译完成后,会继续进入打包环节。
最终发行版本会保存在两个目录:
# 两个目录的内容完全一样
elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT
elasticsearch-7.17.3\distribution\archives\windows-zip\build\install\elasticsearch-7.17.3-SNAPSHOT
elasticsearch-7.17.3\build-tools-internal\build.gradle第178行,里面限制了必须大于最小版本(es7.17.3要求jdk16)编译使用的JDK版本,看官网介绍,使用其它版本也是可以的,不过需要注释掉下边的版本检测代码。
if (JavaVersion.current() < JavaVersion.toVersion(minCompilerJava)) {
throw new GradleException("Java ${minCompilerJava} is required to build Elasticsearch but current Java is version ${JavaVersion.current()}.")
}
发行的版本都会内置JDK,因此编译时会自动下载adoptium openjdk18,在 elasticsearch-7.17.3\build-tools-internal\version.properties文件第4行指定。
bundled_jdk_vendor = adoptium
bundled_jdk = 18+36
openjdk18下载成功后,会保存在下边目录:
C:\Users\用户名\.gradle\caches\modules-2\files-2.1\adoptium_18\windows\18\2e9542c46033e6760b1b214104f2b352e4d659a2\windows-18-x64.zip
直到出现BUILD SUCCESSFUL,编译完成。可以在当前目录下的build和distribution文件夹内找到编译成功后的文件。
按CONTRIBUTING.md的importing-the-project-into-intellij-idea说明,
选择File > Open
在对话框中选择elasticsearch-7.17.3\build.gradle文件
在随后的对话框中选择Open as Project
3.2、修改Gradle JVM
File > Settings…打开设置对话框,修改Gradle JVM为JDK17
如果IDEA没有自动重新加载,可以在窗口中点击重新加载所有Gradle项目。
在加载过程中也会需要下载一些依赖包,需要等待一段时间。
3.3、运行完成加载后,在IDEA打开elasticsearch-7.17.3\server\src\main\java\org\elasticsearch\bootstrap\Elasticsearch.java文件,右键选择运行,运行会报错
错误1:
ERROR: the system property [es.path.conf] must be set
添加代码:System.setProperty(“es.path.conf”,“D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT\config”);
错误2:
Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
添加代码:System.setProperty(“es.path.home”, “D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT”);
错误3:
java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
添加代码:System.setProperty(“log4j2.disable.jmx”, “true”);
错误4:
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createClassLoader")
创建java.policy文件
grant {
permission javax.management.MBeanServerPermission "createMBeanServer";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThread";
permission org.elasticsearch.secure_sm.ThreadPermission "modifyArbitraryThreadGroup";
};
添加代码:System.setProperty(“java.security.policy”, “D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT\config\java.policy”);
完整的代码如下:
public static void main(final String[] args) throws Exception {
/ 添加的代码//
System.setProperty("es.path.conf","D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT\config");
System.setProperty("es.path.home", "D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT");
System.setProperty("log4j2.disable.jmx", "true");
System.setProperty("java.security.policy", "D:\dev\es\elasticsearch-7.17.3\build\distribution\local\elasticsearch-7.17.3-SNAPSHOT\config\java.policy");
/ 添加的代码//
overrideDnsCachePolicyProperties();
......
}
运行效果
访问http://localhost:9200/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)