2

我有一个 Maven 依赖项 pulsar-log4j2-appender,我分叉并更改了源代码,因为它在我的项目中引发异常。

更改源代码后,我运行 mavenpackage命令构建 jar 并将其导入到我的项目中(在 Intellij 中:Project Structure | Modules | Dependencies | Add JARs or directories...).

但是,当我运行应用程序时,它似乎无法找到该依赖项,因为我在 log4j2.xml 文件中声明的 Pulsar appender 没有被配置。

我是否正确导入了 JAR?我想知道 JAR 是否需要在org.apache.pulsar命名空间内才能正确导入。

例如,

这是依赖项看起来没有改变的样子:

在此处输入图像描述

这就是我自己修改和构建它时的样子:

在此处输入图像描述

4

1 回答 1

0

如果您从开源项目修改代码,您应该同时更改 groupId 和 artifact id。如果你不这样做,你就会遇到问题,未来的开发人员会以你不想听到的方式说出你的名字。

更改这些是必要的,以便 Maven 知道使用您的版本而不是公开可用的版本。此外,当人们查看您的项目并从“真实”项目中看到 groupId 和 artifactId 时,他们自然会认为这是正在使用的内容(这就是为什么如果不是这种情况他们会诅咒您的原因)。此外,您必须做一些复杂的事情才能让 Maven 可靠地使用您的依赖项。

我遵循的做法是将“com.mycorp”(mycorp 是我的雇主的名字)添加到 groupId 中,并将 mycorp 添加到 artifactId 中。唯一的缺点是您必须确保“真实”工件的坐标不被引用为依赖项或传递依赖项,否则您将在类路径上有重复的类。

最后,最好的办法是为 Apache Pulsar 创建一个拉取请求,让其他遇到相同问题的人也能从中受益。

于 2020-08-06T04:12:51.930 回答