Elasticsearch V5.0.1 源碼在Idea中如何運行
1. 下載源碼
github: 傳送門
2. 安裝gradle
這里只說注意事項,具體安裝請自行百度
必須是2.13版本才行,2.13的下載地址:
官方下載地址
騰訊微云下載地址
否則會報以下錯誤:
Gradle 2.13 is required to build elasticsearch
# 這個報錯可注釋掉elasticsearch/buildSrc/build.gradle中32行左右的代碼:
if (GradleVersion.current() != GradleVersion.version('2.13')) {
throw new GradleException('Gradle 2.13 is required to build elasticsearch')
}
# 然而,雖然上面的報錯可以通過注釋代碼解決,但是這個報錯,我們卻無能為力,只有準確的使用2.13版本才能解決
# https://github.com/elastic/elasticsearch/issues/18935
# https://discuss.gradle.org/t/gradle-2-14-breaks-plugins-using-consolerenderer/18045
Generating JAR file 'gradle-api-3.2.1.jar'
:buildSrc:clean
:buildSrc:compileJava
:buildSrc:compileGroovy
startup failed:
/Users/ervin/IdeaProjects/sourceCode/elasticsearch/buildSrc/src/main/groovy/com/carrotsearch/gradle/junit4/TestProgressLogger.groovy: 28: unable to resolve class org.gradle.logging.ProgressLogger
@ line 28, column 1.
import org.gradle.logging.ProgressLogger
^
/Users/ervin/IdeaProjects/sourceCode/elasticsearch/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/TapLoggerOutputStream.groovy: 25: unable to resolve class org.gradle.logging.ProgressLogger
@ line 25, column 1.
import org.gradle.logging.ProgressLogger
^
/Users/ervin/IdeaProjects/sourceCode/elasticsearch/buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantLoggerOutputStream.groovy: 23: unable to resolve class org.gradle.logging.ProgressLogger
@ line 23, column 1.
import org.gradle.logging.ProgressLogger
^
3 errors
:buildSrc:compileGroovy FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileGroovy'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
3. 更改gradle的遠程倉庫
gradle的倉庫需求翻墻才能下載依賴。但是好在gradle可以使用maven倉庫,如下:
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
> 開源中國的倉庫貌似已經(jīng)廢棄了,阿里云的倒是不錯的選擇,如上。
**更改gradle倉庫的步驟**
* 將es源碼中所有的顯式指定倉庫的地方都換為阿里云的倉庫地址
repositories {
maven {
url 'https://plugins.gradle.org/m2/'
}
}
repositories {
jcenter()
}
* 然后,將下面這段Copy到名為init.gradle文件中,并保存到 USER_HOME/.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://repo1.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
}
}
}
> init.gradle文件其實是Gradle的初始化腳本(Initialization Scripts),也是運行時的全局配置。
更詳細的介紹請參閱 http://gradle.org/docs/current/userguide/init_scripts.html
## 4.在elasticsearch源碼根目錄下,在命令行中運行g(shù)radle idea
## 5.將elasticsearch源碼導(dǎo)入idea工程
具體導(dǎo)入方式參看博客:http://www.cnblogs.com/yjmyzz/p/gradle-getting-start.html