2011-03-15 91 views
6

我想手动将lucene jar文件添加到我的本地ivy存储库。 我现有的其他apache jar文件夹下.ivy2 \ cache \ apache.org \我创建了一个名为lucene的文件夹,里面有一个名为jars的文件夹。然后我将名为lucene-3.0.3.jar的jar放入jars文件夹中。 下一步我创建的文件夹的Lucene以下常春藤3.0.3.xml:无法将jar文件添加到.ivy缓存手动

<?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

我同意Mark的观点,您应该将文件放入本地存储库而不是缓存。特别是因为预期缓存可能(并且经常)随时被删除。

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

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

所以你有你的文件移动到以下目录,以消除错误:

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

有时候,缺省的格局得到改变基于设置文件,所以确定预期模式的唯一方法是查看缓存中的其他jar(例如,现在,我的缓存在文件名的末尾有[revision]部分,否则全部其他是一样的)。

但是,我同意马克,不过,你真的不想手动添加东西到缓存。相反,将它们添加到默认的本地存储库或更好,create your own basic repository.

+0

谢谢。我可能应该提到我这样做是为了自我介绍常春藤是如何工作和仅用于实验的。我知道,常青藤从基于其解析器的仓库中取出罐子,但认为我会尝试和模仿它在做什么:)谢谢 – Joly 2011-03-17 10:00:19

+0

很高兴我能以某种方式帮助理解这种理解。顺便提一句,我想提一下,常春藤是我见过的最好的文档工具之一。在我上面链接的那个网站上钓鱼,你会发现常春藤的每一个功能以及每个命令的非常有用的例子。我知道常春藤向后和向前以及我知道的一切,我从那个网站了解到。 – gMale 2011-03-17 15:58:33

1

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

我建议您将缓存一起文件到常春藤的本地仓库的位置,其存储(默认):

$HOME/.ivy2/local 

所以,在你的榜样罐子需要被存储在这里:

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