无法手动将jar文件添加到.ivy缓存

时间:2011-03-15 15:59:13

标签: dependencies ivy

我正在尝试手动将lucene jar文件添加到我的本地ivy存储库。 我有其他apache jar所以在现有的文件夹下.ivy2 \ cache \ apache.org \我创建了一个名为lucene的文件夹,里面有一个名为jars的文件夹。然后我将名为lucene-3.0.3.jar的jar放在jars文件夹中。 下一步我在lucene文件夹中创建了以下ivy-3.0.3.xml:

<?xml version="1.0" encoding="UTF-8"?>

<ivy-module version="1.0">
    <info organisation="apache.org" module="lucene" revision="3.0.3" status="release" publication="20090416105712">
   </info>
   <publications>
      <artifact name="lucene-3.0.3" type="jar" ext="jar"/>
   </publications>
</ivy-module>

然后我尝试从像这样的项目中引用它:

<dependency org="apache.org" name="lucene" rev="3.0.3"/>

但我得到一个错误:“未解决的依赖:apache.org #lucene; 3.0.3:未找到”

我能够从我的.ivy2缓存文件夹中找到其他依赖项,只是我手动创建的这个依赖项存在问题。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

我同意Mark,您应该将文件放在本地存储库而不是缓存中。特别是因为期望在任何时候都可以(并且经常)删除缓存。

但是,要解决您的问题,您错误的最可能原因是您的文件夹层次结构与预期的模式不匹配。默认情况下,缓存的布局如下:

[organisation]/[module]/[revision]/[type]s/[artifact].[ext]

因此,您必须将文件移至以下目录以消除该错误:

.ivy2\cache\apache.org\lucene\3.0.3\jars\lucene.jar

有时,默认模式会根据设置文件进行更改,因此确定预期模式的唯一方法是查看缓存中的其他jar(例如,现在,我的缓存中包含[revision]部分文件名的末尾,否则,其他一切都是相同的。)

但是,我同意Mark的意见,你真的不想手动将内容添加到缓存中。相反,将它们添加到默认本地存储库或更好,create your own basic repository.

答案 1 :(得分:1)

常春藤缓存不是存储库,它是缓存(与Maven不同)。缓存包含记录常春藤以前下载的元数据文件。

我建议您将文件放入ivy的本地存储库位置,该位置存储(默认情况下)缓存:

$HOME/.ivy2/local

所以在你的例子中,jar需要存储在这里:

$HOME/.ivy2/local/org.apache/lucene/3.0.3/jars/lucene.jar