【发布时间】:2012-05-13 18:02:54
【问题描述】:
解析了我的ivy.xml 文件后,我想创建一个新的resolved-ivy.xml 文件,其中包含解析中找到的所有传递依赖项。 可以这样做吗?
这与交付不同,交付(我相信)只写出来自您的ivy.xml 的直接依赖项,而不是传递依赖项。 deliver Ant 任务确实有一个 delivertarget 属性,在文档中看起来应该这样做。实际上,它仅适用于同一组织中的模块(因此通常不适用于所有依赖项)并为每个模块生成一个文件。
它也与解析期间生成的ivy-report XML 文件不同,但差别不大。如果我正在尝试的东西是不可能的,那么我想我会直接破解这个文件。
这里的上下文是尝试启用可重复的可重现构建,包括对存储库进行更改(新库、版本)的情况。互联网上有一些帖子试图这样做,但我发现没有一个可以正确地做到这一点。
- 添加到 Ivy 存储库可能会更改解析结果,特别是如果存储库中任何位置(不仅仅是您的项目)的任何依赖项都具有范围依赖项。示例:
A依赖于B;[2.0,4.0],B;3.1稍后会添加到存储库中。 - 想法是正常解析,将解析写入一个扁平的 Ivy 文件,将其保存在项目的 VCS 中以获取该标签(或其他),然后使用
transitive="false"解析该文件。假设存储库中的现有项没有更改,这允许可重复构建。 - 如果有人对此有更好的想法,我会全力以赴。目前,我预计必须破解
ResolveEngine的某些组合以使ResolveReport可用,然后添加自定义DeliverEngine以使用它。
【问题讨论】:
标签: java build dependencies ivy dependency-management