gpt4 book ai didi

java - 关于将 Elasticsearch 编译成 JAR 的问题,就像在 Maven 存储库中如何完成一样

转载 作者:行者123 更新时间:2023-12-02 09:34:37 25 4
gpt4 key购买 nike

我有一个 Maven 项目,我在其中使用了 Elasticsearch 的许多功能。更具体地说,它是通过以下方式导入的:

        <dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.10</version>
</dependency>

现在我正在对 Elasticsearch 源代码进行一些调整以获得一些额外的功能,并且我已经使用 ./gradlew assemble 编译了我的代码,并从 导入了编译后的 jar Maven 中的 ES_SOURCE_CODE_FOLDER/core/build/distributions/elasticsearch-5.6.10-SNAPSHOT.jar 通过指定 systemPathscope (目前,我知道这一点不是人们实际会做的事情,只是为了测试我的实现):

        <dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.10</version>
<scope>system</scope>
<systemPath>/Users/hatsuyukisakura/elasticsearch/core/build/distributions/elasticsearch-5.6.10-SNAPSHOT.jar</systemPath>
</dependency>

但是我意识到,在执行此操作后,我无法再编译我的程序,因为以下导入不再起作用:

import org.apache.lucene.index.Fields;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.queryparser.flexible.standard.QueryParserUtil;

我的问题是,我是否以错误的方式编译 Elasticsearch?我该如何以与在 Maven 存储库中编译相同的方式来编译它,以便我仍然可以从 org.apache.lucene 导入工作?

如果需要这些信息:我对 Elasticsearch 代码的更改非常有限,基于 857bfc2ac43ae3986197aeb2177ab5ff87d9f3b4 的分支,该分支仍然具有 5.6.10 作为版本号。我的工作环境是:

$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_212-b03)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.212-b03, mixed mode)

$ mvn --version
[MVNVM] Using maven: 3.5.2
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00:58:13-07:00)
Maven home: /Users/hatsuyukisakura/.mvnvm/apache-maven-3.5.2
Java version: 1.8.0_212, vendor: AdoptOpenJDK
Java home: /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.13.6", arch: "x86_64", family: "mac"

$ gradle --version

------------------------------------------------------------
Gradle 4.7
------------------------------------------------------------

Build time: 2018-04-18 09:09:12 UTC
Revision: b9a962bf70638332300e7f810689cb2febbd4a6c

Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM: 1.8.0_212 (AdoptOpenJDK 25.212-b03)
OS: Mac OS X 10.13.6 x86_64

最佳答案

我无法评论从源码编译ElasticSearch的方式,Based on this information看来您已步入正轨。

但是,我可以告诉你,如果你想出了一个自定义发行版之后,在 Maven 中添加了一个依赖项,然后看到 org.apache.lucene.index.Fields (例如)没有找到,最好的方法是使用 Winzip/Winrar 或任何其他可以打开 Zip 文件的程序打开 Artifact 本身(因为 jar 基本上是一个 zip),并确保文件 org.apache.lucene.index.Fields确实存在在那里。

如果它在那里,那么你的maven定义有问题,这里很多事情都可能出错,例如,如果你在linux上,生成文件的权限或者可能与其他依赖项冲突(你可以使用 mvn help:effective-pom 来maven 实际上决定选择什么作为依赖项)

如果不存在,则说明 Elasticsearch 编译期间出现问题。

关于java - 关于将 Elasticsearch 编译成 JAR 的问题,就像在 Maven 存储库中如何完成一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57641851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com