无法使用 ivy 解决依赖关系

Posted

技术标签:

【中文标题】无法使用 ivy 解决依赖关系【英文标题】:Cannot resolve dependency using ivy 【发布时间】:2016-01-06 03:29:10 【问题描述】:

我遇到了 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) 它不起作用,我看到一个错误:

未解决的依赖关系:org.drools#drools-core;6.3.0.Final:未找到

我可以看到这两个版本之间的唯一区别是 6.3.0 是捆绑包。 在 Eclipse 中,当我转到 Ivy 的属性 -> 类路径 -> 我检查了 Read OSGI metadata & Accepted types = 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

【问题讨论】:

【参考方案1】:

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

常春藤分辨率打印以下警告消息:

[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

以下父模块:

org.kie # kie-platform-bom ; 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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于无法使用 ivy 解决依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 ivy.xml 解决依赖关系,找不到模块错误

Apache IVY 无法解析 MAVEN 项目的依赖关系

ivy 无法解析 org.springframework 依赖项

常春藤解决某些用户失败

使用 gradle 解决代理存储库上的 ivy 依赖关系会导致资源丢失

无法使用 Eclipse 中的 IvyDE 插件从常春藤缓存中删除过时的工件