【问题标题】:Unable to add jar file to .ivy cache manually无法手动将 jar 文件添加到 .ivy 缓存
【发布时间】:2011-07-15 22:13:36
【问题描述】:

我正在尝试手动将 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: not found”

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

我错过了什么?

【问题讨论】:

    标签: dependencies ivy


    【解决方案1】:

    我同意 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.

    【讨论】:

    • 谢谢。我可能应该提到我这样做是为了自学常春藤的工作原理并且仅用于实验。我知道常春藤根据其解析器从存储库中获取罐子,但我想我会尝试模仿它正在做的事情:) 谢谢
    • 很高兴我能以某种方式帮助理解这一点。顺便提一下,Ivy 是我见过的最好的文档工具之一。在我上面链接的那个网站上四处寻找,你会发现 Ivy 的所有功能以及每个命令的非常有用的示例。我了解常春藤,我知道的一切都是从那个网站学到的。
    【解决方案2】:

    ivy 缓存不是存储库,它是一个缓存(不同于 Maven)。缓存包含记录 ivy 之前下载的内容的元数据文件。

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

    $HOME/.ivy2/local
    

    因此,在您的示例中,jar 需要存储在此处:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-23
      • 2016-01-14
      • 2013-03-09
      • 2013-06-09
      • 2015-03-27
      • 2017-02-25
      • 2012-10-30
      • 1970-01-01
      相关资源
      最近更新 更多