2009-10-15 101 views
4

我正在使用Ivy来解决我的非常小的项目中的依赖项。这是我第一次这样做,而且我的项目非常小,因此学习更多。常春藤未能解决依赖关系:要检查什么,该怎么办?

5分钟前,当试图下载log4j时,我遇到了一个问题。

我的配置是非常基本的,我有一个Ant任务:

<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

回答

7

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

或者,如果你愿意坚持使用1.2.15,您可以添加an exclude element到您的ivy.xml文件告诉常春藤忽略这些库:

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

希望帮助:)

相关问题