如何配置Apache Ivy来删除孤立工件?

时间:2009-04-18 04:15:00

标签: java ant ivy

假设我有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目录中删除?我的想法是,每次升级工具时,我都不希望开发人员的磁盘空间使用率大幅增加。

理想情况下,我也希望将其从本地存储库中删除。我确实意识到本地存储库的意图是它在项目之间共享,因此删除任何东西都没有意义,因为它不知道该工件是否仍在其他项目中使用。但必须有某种修剪程序......

1 个答案:

答案 0 :(得分:10)

我一直在使用Ivy 2.0.0,所以我不知道这是否适用于你正在使用的版本。

Ivy retrieve任务具有sync属性。将其设置为true,将删除检索到的目录中的未使用/未知文件(在您的案例中为lib)。请记住,这将意味着此目录中任何手动复制的工件将被删除。

另请注意,如果您使用sync选项,但Ivy不会解析依赖项(例如空格或缺少ivy.xml),则将删除检索目录。