我有一个本地Artifactory存储库,其中我有两个 commons-logging
的 jar :一个用于 version 1.0.4
,一个用于 version 1.1.1
. 我正在尝试使用Ivy下载带有ant任务的旧版本(在ivy.xml中使用正确的依赖标记),然后我将此依赖标记的"rev"属性更改为1.1.1 .
当使用ivy:resolve in ant时,这个较新的jar会成功下载到我的缓存中,但旧的jar不会自动删除,我想让这件事发生 .
在查看常 Spring 藤文档后,我无法弄清楚如何做到这一点;有没有人知道如何在下载较新的工件时使用Ivy来删除旧版本的工件,无论是使用解析任务还是其他什么?
2 回答
在缓存中使用“旧”jar确实没有问题 . 如果您的项目不需要旧 jar ,Ivy会忽略它 . 旧jar在你的系统中占用大约50千字节 . 在Terabyte驱动器的时代,释放空间并不值得花费时间和精力 .
常 Spring 藤缓存就是:缓存 . 这是 ALL 你的项目使用常 Spring 藤 . 如果一个较旧的项目需要1.0.4版本的commons-logging jar,它将已经在常 Spring 藤缓存中而不必下载,因此,就像一个好的缓存一样,它可以节省您的时间和精力 .
你可以做一个
<ivy:cleancache>
,但它真的擦洗你的整个缓存:一切都将被删除 . 它将摆脱旧的1.0.4版本的jar,但它也将摆脱jar的1.1.1版本 . 当然,Ivy会在下次要求时下载它,但这意味着等待Ivy下载所有的jar .顺便说一句,这是
<ivy:cleancache>
的一个大问题:如果你最终打破了其他版本 . 通常,这不是个别用户的问题,但它可以用于持续集成系统 .如果你看一下常 Spring 藤文档,它确实说
<ivy:cleancache>
与以下相同:您可以使用它作为使用日期selector删除旧 jar 的基础:
但是,它使用jar的修改日期而不是jar的创建日期 .
忽略你的常 Spring 藤缓存目录,不要担心它 . 如果Ivy缓存确实太大,你可以删除它,Ivy只需根据需要重新下载新的jar .
我总是包含一个ANT“realclean”目标,它还会清除我的常 Spring 藤缓存 .
Doco