如何覆盖常春藤缓存的位置?

Posted

技术标签:

【中文标题】如何覆盖常春藤缓存的位置?【英文标题】:How to override the location of Ivy's Cache? 【发布时间】:2010-11-20 13:21:24 【问题描述】:

我正在使用 Ivy 作为我的持续集成构建系统的一部分,但我需要覆盖 Ivy 的本地缓存区域所在的默认位置。

【问题讨论】:

【参考方案1】:

ivysettings.xml 中的类似内容:

<ivysettings>
    <caches defaultCacheDir="/path/to/my/cache/dir"/>
</ivysettings>

请参阅http://ant.apache.org/ivy/history/latest-milestone/settings/caches.html 上的文档

【讨论】:

啊,也许这就是我出错的地方 - 我没有 ivysettings.xml 文件! Ivy 是如何使用这个文件的?我想我是通过命令行参数传入的? 在网上找到这个...ant.apache.org/ivy/history/latest-milestone/standalone.html我想这回答了我的第二个问题!【参考方案2】:

虽然上面 skaffman 的回答是正确的,但我发现它比我预期的要多得多!

当我将 ivysettings.xml 文件添加到项目中时,我需要重新定义几乎所有内容,因为在此之前默认值一直运行良好。

所以,我发现了如何将新的缓存目录添加到我的 NAnt 脚本中的内联命令行...

< exec program="java" commandline="... ... -jar $ivy.jar -cache $project.cache ... ... />

$ivy.jar 是我的 .jar 文件的位置,$project.cache 是脚本前面设置的新位置,我希望使用缓存区域。)

这意味着我不需要 ivysettings.xml 文件,我可以将所有内容恢复为使用默认解析器等。

【讨论】:

您可以通过在 ivysettings 文件中的缓存行后添加 &lt;include url="$ivy.default.settings.dir/ivysettings.xml"/&gt; 来恢复默认行为。 啊啊啊啊!我不知道!谢谢!【参考方案3】:

我使用Jenkins作为CI构建系统,并创建$HOME/.ivy2/ivysettings.xml:

<ivysettings>
    <properties environment="env" />
    <caches defaultCacheDir="$env.WORKSPACE/.ivy2/cache" />
</ivysettings>

这会在每个 jenkins 作业的工作区创建 ivy 缓存目录。

【讨论】:

以上是关于如何覆盖常春藤缓存的位置?的主要内容,如果未能解决你的问题,请参考以下文章

使用 maven 存储库作为本地常春藤缓存

常春藤的单独缓存文件夹

无法使用 Eclipse 中的 IvyDE 插件从常春藤缓存中删除过时的工件

常春藤发布到存储库不会更新本地缓存

常春藤无法解决

使用 Spark-Submit 在 kubernetes 上安装 PySpark 软件包:找不到常春藤缓存文件错误