如何修复Windows Maven中的“缺少需求”错误

时间:2019-06-14 15:06:17

标签: maven slf4j tycho dbeaver

我正在尝试构建dbeaver并在运行mvn package时出现以下错误:

[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: org.jkiss.dbeaver.slf4j 1.0.0.qualifier
[ERROR]   Missing requirement: org.jkiss.dbeaver.slf4j 1.0.0.qualifier requires 'bundle org.slf4j.api 0.0.0' but it could not be found

我正在Windows 10上运行并使用apache-maven-3.6.1。奇怪的是,当我在Linux上尝试相同的步骤时,它的构建没有问题。

1 个答案:

答案 0 :(得分:0)

更新

可能的原因是maven 3.6.1 https://www.eclipse.org/lists/tycho-user/msg08177.html

原始帖子

我想这里的问题是https://dbeaver.io/eclipse-repo/ p2站点缺少slf4j捆绑包,并且Tycho(?)无法解决该要求。我仍然不知道如何使独立的Maven构建工作,但是这是一个关于如何使用Eclipse(和嵌入式Maven)构建Windows二进制文件的丑陋的解决方法。

您可以使用 p2-maven-plugin 自己构建丢失的捆绑包。您可以临时修改product\localRepository\pom.xml使其具有单个工件,而无需设置全新的项目,例如

...
<artifacts>
  <artifact><id>org.slf4j:slf4j-api:1.7.26</id></artifact>
</artifacts>
...

现在建立那个(product\localRepository\)项目并开始码头

mvn p2:site
start mvn jetty:start

现在,您可以将此临时更新站点(http://localhost:8080/site/)添加到Eclipse安装中(帮助->安装新软件)并安装slf4j。您应该已经能够从Eclipse中运行DBeaver。

要构建二进制文件,将此临时仓库添加到主pom.xml文件中,例如在 local-contrib 之后。

    <repository>
        <id>more</id>
        <url>http://localhost:8080/site/</url>
        <layout>p2</layout>
    </repository>

然后转到运行配置-> Maven Build-> dbeaver,输入 package 目标并勾选 Skip Tests ,单击运行并去喝杯咖啡。

enter image description here

如您所见,Eclipse使用了某种嵌入式maven运行时,因此我猜想它以不同的方式解决问题。

注意,如果您要更新本地git仓库,则可能需要大量更新Eclipse项目。我无法通过右键单击项目->配置->配置和检测嵌套项目来做到这一点:(但是删除Eclipse项目和嵌套项目(不删除底层文件)并重新导入Maven项目对我来说是成功的秘诀。 / p>

https://github.com/dbeaver/dbeaver/issues/6115还存在一个未解决的问题。