假设我有ivy.xml
,其中包含以下内容:
<dependency org="checkstyle" name="checkstyle" rev="4.3" />
然后我想升级到Checkstyle 4.4,所以我将ivy.xml
更改为包含:
<dependency org="checkstyle" name="checkstyle" rev="4.4" />
在第一次配置retrieve
之后,我有文件checkstyle-4.3.jar
。在第二次配置之后,我还有文件checkstyle-4.4.jar
,文件checkstyle-4.3.jar
仍然存在。
有没有办法让Ivy意识到旧文件是一个孤儿,并将其从lib
目录中删除?我的想法是,每次升级工具时,我都不希望开发人员的磁盘空间使用率大幅增加。
理想情况下,我也希望将其从本地存储库中删除。我确实意识到本地存储库的意图是它在项目之间共享,因此删除任何东西都没有意义,因为它不知道该工件是否仍在其他项目中使用。但必须有某种修剪程序......
答案 0 :(得分:10)
我一直在使用Ivy 2.0.0,所以我不知道这是否适用于你正在使用的版本。
Ivy retrieve
任务具有sync
属性。将其设置为true
,将删除检索到的目录中的未使用/未知文件(在您的案例中为lib
)。请记住,这将意味着此目录中任何手动复制的工件将被删除。
另请注意,如果您使用sync
选项,但Ivy不会解析依赖项(例如空格或缺少ivy.xml
),则将删除检索目录。