Eclipse导入Elasticsearch源码
Eclipse导入Elasticsearch源码的步骤,
基于Elasticsearch 6.2.2的源码版本。
1.安装JDK1.9
Elasticsearch 6.2.2需要JDK1.9编译,否则后面步骤会报错。
Java SE Downloads 地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2.下载Elasticsearch源码,并且切换到6.2.2分支
Elasticsearch github源码托管地址:
https://github.com/elastic/elasticsearch.git
3.下载gradle的安装包
查看elasticsearch\gradle\wrapper\gradle-wrapper.properties发现如下配置:
distributionUrl=https://services.gradle.org/distributions/gradle-4.5-all.zip
Elasticsearch 6.2.2需要安装gradle-4.5,官方下载地址:
https://services.gradle.org/distributions/gradle-4.5-all.zip
注意如果在国内无法下载,则需要自己挂代理,或者百度搜索从其他渠道下载gradle-4.5-all.zip。
4.拷贝文件
将下载的gradle-4.5-all.zip包放到elasticsearch\gradle\wrapper目录下,
确保和elasticsearch\gradle\wrapper\gradle-wrapper.properties在同级目录,
然后修改elasticsearch\gradle\wrapper\gradle-wrapper.properties配置如下:
distributionUrl=gradle-4.5-all.zip
5.修改源码Maven仓库地址
由于国内无法下载国外仓库的jar包,需要替换Maven地址,设置为本地或者国内可用的Maven仓库。
elasticsearch\benchmarks\build.gradle
elasticsearch\client\benchmark\build.gradle
elasticsearch\distribution\build.gradle
elasticsearch\test\logger-usage\build.gradle
修改源码中上面4个build.gradle文件里面的repositories-maven-url的值,
配置为可用的仓库地址,修改示例如下:
buildscript {
repositories {
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
}
}
其中http://maven.aliyun.com/nexus/content/groups/public/是阿里云的Maven仓库。
6.修改全局Maven仓库地址
在USER_HOME/.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
}
}
}
其中USER_HOME/.gradle/是自己的gradle安装目录,示例值:C:\Users\Administrator.gradle,
如果没有.gradle目录,可用自己创建,或者先执行第7步,等gradle安装后再回来修改。
上面脚本把url匹配到的仓库都替换成了阿里云的仓库,
如果有未匹配到的导致编译失败,可用自己仿照着添加匹配条件。
7.gradle编译源码
windows运行cmd,进入DOS命令行,
然后切换到elasticsearch源码的根目录,
执行如下命令,把elasticsearch编译为eclipse工程:
gradlew eclipse
编译失败则按照错误信息解决问题,可用使用如下命令帮助定位问题:
gradlew eclipse -info
gradlew eclipse -debug
一般是Maven仓库地址不可用导致jar包无法下载,从而编译失败,
此时请参考步骤5和6修改相关的仓库地址。
编译成功后打印日志:
BUILD SUCCESSFUL in 8m 30s
8.eclipse导入elasticsearch工程
依次点击:
File: Import: Existing Projects into Workspace,
注意选中Search for nested projects,否则无法看到所有工程,
然后把出现的工程导入eclipse即可。
问题解决:
1.gradle内存不够,进程无法启动问题:
修改gradle.properties这个文件,在其中配置合适的JVM内存:
org.gradle.jvmargs=-Xmx512m
2.eclipse导入elasticsearch工程,部分工程不存在:
因为存在部分依赖包下载失败,需要重新下载:
gradlew eclipse
反复执行上面的命令,直到所有的jar包下载成功,
反复在eclipse中refresh,clean对应的工程。
必要时删除USER_HOME.gradle\caches目录下相应jar包文件目录,
重复执行gradlew eclipse下载对应的jar包。
Eclipse导入Elasticsearch源码的更多相关文章
- Eclipse导入Hadoop源码项目及编写Hadoop程序
一 Eclipse导入Hadoop源码项目 基本步骤: 1)在Eclipse新建一个java项目[hadoop-1.2.1] 2)将Hadoop压缩包解压目录src下的core,hdfs,mapred ...
- eclipse导入Java源码
eclipse导入Java源码 下载源码包(一般jdk都自带了, 我的没有) src.zip eclipse -> window -> preferences -> JAVA -&g ...
- Hadoop1.x目录结构及Eclipse导入Hadoop源码项目
这是解压hadoop后,hadoop-1.2.1目录 各目录结构及说明: Eclipse导入Hadoop源码项目: 注意:如果没有ant的包可以去网上下,不是hadoop里面的. 然后如果通过以上还报 ...
- eclipse导入tomcat源码
我的开发环境:windows7 64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ...
- Eclipse导入Zookeeper源码Version2017.11.3
将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...
- spring源码学习(一):eclipse导入spring源码
前言 对于一门技术,我们最先是了解它(what),然后再熟练的使用它(how)以及何时用它(when),最后肯定要看透它(why).spring作为Java开发人员可以说是最熟悉不过的了,基本每个Ja ...
- Eclipse导入Solr源码Version5.5.3
将Solr的5.5.3版本源码导入Eclipse, Solr源码需要使用ant构建后才能导入Eclipse. 1.JDK安装 Solr要求jdk1.7+: 请参考Windows下安装配置jdk 2.A ...
- Eclipse导入hadoop源码
在windows中,使用Eclipse阅读hadoop源码,首先到apache官网下载tar.gz的hadoop源码压缩文件,解压. 方法1:(hadoop技术内幕推荐) 打开Eclipse,新建ja ...
- Eclipse导入Tomcat源码(转)
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...
随机推荐
- centos7 自动同步时间
rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime vim /etc/sysconfig/cloc ...
- vim使用配置(转)
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有行号的.语法高亮度显示.智能缩进等功能的. 为了更好的在vim下进行工作,需要手动配置一个配置文件: .vimrc 在启动vim时,当前用户 ...
- d3 CSS
CSS的inline.block与inline-block 块级元素(block):独占一行,对宽高的属性值生效:如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽. 行内元素(inline ...
- Can references refer to invalid location in C++?
在C++中,引用比指针更加的安全,一方面是因为引用咋定义时必须进行初始化,另一方面是引用一旦被初始化就无法使其与其他对象相关联. 但是,在使用引用的地方仍然会有一些例外. (1)Reference t ...
- 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker配置介绍及发送流程、异常(XX Busy)问题分析
参考资料 Rocketmq官网:http://rocketmq.apache.org/ Rocketmq的其它项目:https://github.com/apache/rocketmq-externa ...
- QPS和TPS的区别于理解
TPS: (每秒事务处理量(TransactionPerSecond)) 一个表达系统处理能力的性能指标,每秒处理的消息数(Transaction Per Second),每秒事务处理量 - 性能测试 ...
- 【antd】form表单默认值设置
问题: 在antd的form表单的api里面有个"initialValues"可以设置默认值.但是表单没有更新 <Form name="test" for ...
- HGAME2021 week3 pwn writeup
一共放出五道题,都不是很难. blackgive 考栈转移,值得注意的一点是转移过去先填充几个ret,因为如果直接在转移过去的地方写rop链,执行起来会覆盖到上面的一些指针,导致程序不能正常输入和输出 ...
- java对象与类
1.设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作. 源代码: 1 package t ...
- CF919B Perfect Number 题解
Content 给定一个数字 \(k\),求出第 \(k\) 小的各数位和为 \(10\) 的数. 数据范围:\(1\leqslant k\leqslant 10000\). Solution 这题为 ...