常春藤未能解决依赖:要检查什么,该怎么办?

时间:2009-10-15 19:30:19

标签: java ant ivy

我正在使用Ivy解决我的小项目中的依赖关系。这是我第一次这样做,因为我的项目非常小,所以学习更多。

我在5分钟前尝试下载log4j时出现问题。

我的配置非常基础,我有一个蚂蚁任务:

<target name="resolve" description="--> retrieve dependencies with ivy">
        <ivy:retrieve/>
    </target>

我的Ivy.xml文件是这样的:          

    <dependency org="javax.servlet" name="servlet-api" rev="2.5" />
    <dependency org="log4j" name="log4j" rev="1.2.15" />


</dependencies>

问题似乎发生在常春藤试图下载jms 1.1(我想它需要log4j),正如我在控制台中看到的那样:

:

:::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      ::              FAILED DOWNLOADS            ::
[ivy:retrieve]      :: ^ see resolution messages for details  ^ ::
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:retrieve]      :: javax.jms#jms;1.1!jms.jar
[ivy:retrieve]      :: com.sun.jdmk#jmxtools;1.2.1!jmxtools.jar
[ivy:retrieve]      :: com.sun.jmx#jmxri;1.2.1!jmxri.jar
[ivy:retrieve]      ::::::::::::::::::::::::::::::::::::::::::::::

我能做些什么吗?

非常感谢你们。

˚F

1 个答案:

答案 0 :(得分:8)

问题是,正如您已经意识到的那样,这些罐子不在远程存储库中。但是你的程序可能并不真正需要它们。 Ivy尝试下载它们的唯一原因是因为它们是在ibiblio的pom.xml中声明的。如果您尝试1.2.14版本,您将看到这些传递依赖项不在1.2.14 pom中,因此Ivy不会下载它们。

或者,如果您希望坚持使用1.2.15,可以将an exclude element添加到ivy.xml文件中,告诉Ivy忽略这些库:

<dependency org="log4j" name="log4j" rev="1.2.15">
  <exclude org="com.sun.jdmk"/>
  <exclude org="com.sun.jmx"/>
  <exclude org="javax.jms"/>
</dependency>

希望有所帮助:)