Зачем делать этот контент
Недавно купил книгу "Анализ и оптимизация исходного кода Elasticsearch", вторая глава
Подготовьте среду сборки и отладки
Но попробовав, она закончилась неудачей.Я думаю, что многие из друзей, прочитавших эту книгу, наверняка сталкивались с таким. Невозможность запустить отладочный исходный код, по сути, означает, что эта книга заранее окончена.
Поэтому я собирал информацию в интернете, и сам пробовал, и в итоге получилось, и поделился своим опытом со всеми.
Готов к работе
- java 1.8
- Elasticsearch 6.1.2
- win7
- Intellij IDEA 2018.1.6 x64
- gradle 4.3
Импорт проекта
1. Загрузите исходный код es
кликните сюда
Выберите исходный код в формате zip, чтобы загрузить и разархивировать его.
2. Скачать градиент
Какую версию мне скачать?
Откройте файл \elasticsearch-6.1.2\gradle\wrapper\gradle-wrapper.properties, и вы увидите следующее:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip
distributionSha256Sum=b3afcc2d5aaf4d23eeab2409d64c54046147322d05acc7fb5a63f84d8a2b8bd7
Очевидно, требуется версия gradle4.3
Адрес загрузки Gradle 4.3
Здесь мы загружаем и помещаем пакет gradle-4.3-all.zip вelasticsearch\gradle\wrapperкаталог, убедитесь, чтоelasticsearch\gradle\wrapper\gradle-wrapper.propertiesкаталог того же уровня, а затем изменитьelasticsearch\gradle\wrapper\gradle-wrapper.propertiesКонфигурация выглядит следующим образом:
distributionUrl=gradle-4.3-all.zip
3. Измените адрес хранилища Maven
На самом деле, этот шаг не предназначен специально для этой статьи, в основном из-за слишком низкой скорости загрузки иностранного репозитория maven по умолчанию!
Таким образом, этот шаг относится ко всем проектам, которым необходимо загрузить зависимости maven.
Конечно, если ты за границей, когда я не говорил
Необходимо изменить конфигурацию URL-адреса maven для следующих файлов:
- elasticsearch\benchmarks\build.gradle
- elasticsearch\client\benchmark\build.gradle
Найдите в вышеуказанных двух файлахrepositories-maven-urlЗначение , настроенное как адрес maven Alibaba Cloud:maven.aliyun.com/Nexus/conte…
Измените адрес глобального репозитория 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-адресу, на склад Alibaba Cloud, Если есть несопоставленные, которые вызывают сбой компиляции, вы можете добавить соответствующие условия самостоятельно.
4. Скомпилируйте исходный код с помощью gradle
Windows запускает cmd, входит в командную строку DOS, затем переключается в корневой каталог исходного кода elasticsearch и выполняет следующую команду для компиляции elasticsearch в проект идеи:
gradlew idea
Распечатайте лог после компиляции:
BUILD SUCCESSFUL in 3m 03s
5. Импортируйте проект в идею
в идееFile -> New Project From Existing SourcesВыберите корневой каталог Elasticsearch, который вы загрузили, затем нажмитеopen,послеImport project from external model -> Gradle, установите флажок Использовать автоимпорт. Затем подождите, пока градиент идеи снова скомпилируется.
Стартовый проект
Метод запуска ESelasticsearch/server/src/main/org/elasticsearch/bootstrap/Elasticsearch.javaсерединаmain()метод. Но запуск таким образом выдаст ошибку. Нам нужно сделать некоторую настройку.
1.конфигурационный каталог
идти сwoohoo.elastic.co/capable/download…Загрузите скомпилированную версию Elasticsearch, обратите внимание, что это должен быть тот же номер версии, после распаковкиconfigСкопируйте каталог в исходный каталогhomeв каталоге Затем откройте «Редактировать конфигурации» и добавьте следующую конфигурацию в параметры виртуальной машины.
-Des.path.conf=D:\elasticsearch-6.3.2\home\config
2. Настройте path.home
Еще варианты ВМ, новые
-Des.path.home=D:\elasticsearch-6.3.2\home
и поместите выпуск ES6.3.2 вmodulesскопировать папку вhomeПод содержанием
3. Включить jmx для log4j
-Dlog4j2.disable.jmx=true
4. область зависимости maven
ОткрытымIDEA Edit Configurations,даватьInclude dependencies with Provided scopeгалочка
5. Настройте политики безопасности
существуетhome/configновый каталогjava.policyФайл, содержимое файла
grant {
permission java.lang.RuntimePermission "createClassLoader";
};
Затем добавьте параметр java.security.policy в параметры виртуальной машины и укажите этот файл.
-Djava.security.policy=D:\elasticsearch-6.3.2\home\config\java.policy
На этом этапе мы получаем окончательную версию параметров параметров виртуальной машины, как показано ниже:
Нажмите «Выполнить» еще раз, вы увидите вывод консоли:Снова откройте браузер и перейдите по адресу http://localhost:9200/. Сделанный!