无法使用常春藤解决依赖关系

Cannot resolve dependency using ivy

我遇到了 ivy 无法解决我的一些依赖项的问题。以下是我如何重现该问题:

我在 Eclipse 中有一个空的 java 项目。我已将 ivy.xml 添加到我的项目中:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
    <info
        organisation=""
        module=""
        status="integration">
    </info>
    <dependencies >
        <dependency org="org.drools" name="drools-core" rev="5.5.0.Final"/>
    </dependencies>
</ivy-module>

这工作正常,ivy 能够解析和下载 drools。

如果我将修订版更改为 6.3。0.Final (http://mvnrepository.com/artifact/org.drools/drools-core/6.3.0.Final) 它不起作用,我看到一个错误:

unresolved dependency: org.drools#drools-core;6.3.0.Final: not found

我能看到这两个版本之间的唯一区别是 6.3.0 是捆绑包。 在 Eclipse 中,当我转到 Ivy 的属性 -> 类路径 -> 我检查了读取 OSGI 元数据和接受的类型 = jar,bundle,ejb,maven-plugin

我也用谷歌搜索并发现了这个(这可能与这个问题完全无关): http://mail-archives.apache.org/mod_mbox/ant-dev/201501.mbox/%3CCAC_RtEZx=bqk+N3MrtH-Y-zCqDfm5=eA3rYOa7hLLYC_u82S9g@mail.gmail.com%3E

似乎是 Maven 存储库问题。看起来其中一个父 POM 文件中缺少依赖项。

ivy 分辨率打印以下警告消息:

[ivy:resolve] :::: WARNINGS
[ivy:resolve]   io problem while parsing ivy file: https://repo1.maven.org/maven2/org/kie/kie-platform-bom/6.3.0.Final/kie-platform-bom-6.3.0.Final.pom (java.io.IOException: Impossible to import module for file:/home/mark/.ivy2/cache/org.kie/kie-platform-bom/ivy-6.3.0.Final.xml.original. Import=org.jboss.dashboard-builder#dashboard-builder-bom;6.3.0.Final)
[ivy:resolve]   io problem while parsing ivy file: https://repo1.maven.org/maven2/org/kie/kie-parent-with-dependencies/6.3.0.Final/kie-parent-with-dependencies-6.3.0.Final.pom (java.io.IOException: Impossible to import module for file:/home/mark/.ivy2/cache/org.kie/kie-parent-with-dependencies/ivy-6.3.0.Final.xml.original. Import=org.kie#kie-platform-bom;6.3.0.Final)
[ivy:resolve]   io problem while parsing ivy file: https://repo1.maven.org/maven2/org/drools/drools/6.3.0.Final/drools-6.3.0.Final.pom (java.io.IOException: Impossible to load parent for file:/home/mark/.ivy2/cache/org.drools/drools/ivy-6.3.0.Final.xml.original. Parent=org.kie#kie-parent-with-dependencies;6.3.0.Final)
[ivy:resolve]   io problem while parsing ivy file: https://repo1.maven.org/maven2/org/drools/drools-core/6.3.0.Final/drools-core-6.3.0.Final.pom (java.io.IOException: Impossible to load parent for file:/home/mark/.ivy2/cache/org.drools/drools-core/ivy-6.3.0.Final.xml.original. Parent=org.drools#drools;6.3.0.Final)
[ivy:resolve]       module not found: org.drools#drools-core;6.3.0.Final

以下父模块:

有一个POM file dependency

<dependency>
  <groupId>org.jboss.dashboard-builder</groupId>
  <artifactId>dashboard-builder-bom</artifactId>
  <type>pom</type>
  <version>${version.org.jbpm.dashboard-builder}</version>
  <scope>import</scope>
</dependency>

那个does not seem to exist in Maven Central

不确定 Ivy 是如何工作的,但如果您可以在那里添加额外的存储库,添加 https://repository.jboss.org 应该可以解决问题。这应该可以解决不存在的 org.jboss.dashboard-builder 的问题,Mark 已经指出这是问题的根源。

在使用 Gradle 进行依赖管理时,以下帮助解决了同样的问题。

repositories {
    maven {
        url "https://repository.jboss.org"
    }
}