Ivy缓存了一个依赖文件,但没有复制到我的lib

时间:2013-05-10 21:43:35

标签: ant guava ivy

我遇到了一个奇怪的问题。我将Guava添加到我的ivy.xml中,如下所示:

<dependency org="com.google.guava" name="guava" rev="14.0.1" conf="test"/>

当我运行蚂蚁时,我可以看到它已经解决了:

[ivy:retrieve]  found com.google.guava#guava;14.0.1 in default

我可以在〜/ .ivy2 / cache中找到该文件。但它没有被复制到我的lib目录。

其他依赖项没有问题....有什么建议吗?感谢。

3 个答案:

答案 0 :(得分:1)

在ivy.xml中指定配置映射

我遇到了同样的问题,并且在我的生活中无法确定下载依赖项的位置。 Ivy似乎暗示它已被下载,并且缓存中有一些条目,但我的/ lib中没有出现任何内容。

---------------------------------------------------------------------
|                  |            modules            ||   artifacts   |
|       conf       | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
|      compile     |   2   |   2   |   2   |   0   ||   0   |   0   |
---------------------------------------------------------------------

但是当我看到answer时,一切都改变了。

ivy.xml中,您必须指定配置映射conf="myconfig->default",密钥为->default

<configurations>
    <conf name="myconfig" description="Required for JSF"/>
</configurations>

<dependencies>
    <dependency conf="myconfig->default" name="jsf-api" org="com.sun.faces" rev="2.2.13"/>          
</dependencies>

这会将您的用户定义配置映射到Maven范围(确切地说,default范围)。实际上,您只能使用defaultmaster范围(source)。

请参阅:

我的直觉是,只有在指向Maven存储库时才需要这样做。我没有尝试过。

如果您已经完成此操作但仍然无法下载,或许@ javabrett的answer可以提供帮助。

答案 1 :(得分:0)

如果你真的使用了&lt; ivy:retrieve /&gt;,而不仅仅是解决,那么可能是因为你需要使用conf =“test-&gt; default”?

答案 2 :(得分:0)

这是由com.google.guava:guava:14.0.1作为OSGi bundle而不是jar的Maven打包类型引起的。有Ivy bug for this已解决,但解决方案尚未完成。

如果要下载两种包类型,则需要避免指定type="jar",而是使用type="jar,bundle"

另请参阅this questionPOM definition