2

我有一个主项目,其中模块 A 依赖于为模块 B 构建创建的 .jar 文件。在开发过程中,我定期修改 B,然后构建 B 以创建库,然后构建 A 到使用这些更改。

有没有办法将模块 A 的常春藤文件指向我的模块 B 构建创建的 jar 文件?鉴于我多次迭代,我不想一遍又一遍地将模块 B 的 jar 放入 ivy 中。在构建每个模块 B 之后,必须将 jar 复制到模块 A 的构建目录结构中也很烦人。

实际上,对我来说情况更糟,因为我在某个依赖树(A->B->CD)中有大约 4 个模块。如果只是 A 和 B,我可能会忍受它,但我厌倦了在子模块构建后复制 jar 文件,并认为是否有办法覆盖 ivy 文件依赖行以在本地查看然后会让生活变得简单很多。

4

1 回答 1

5

将 Ivy 依赖项指向本地构建的模块并不是解决此问题的方法。相反,当您构建模块 B 时,将其发布到您的本地 Ivy 存储库。当您解决模块 A 的依赖关系时,它将从本地存储库中拉下模块 B。

来自本地存储库上的常春藤文档

当您想要做某事而不受环境中发生的任何其他事情的干扰时,本地存储库特别有用。这意味着只要 ivy 能够在此存储库中找到一个模块,它就会被使用,无论其他模块有什么可用的。

例如,如果您有一个模块在修订 latest.integration 中声明了对模块 foo 的依赖关系,那么如果在本地存储库中找到了 foo 的修订,它将被使用,即使其他存储库中存在更新的修订.

这可能会让你们中的一些人感到不安,但是假设您必须在项目中实现一个新功能,并且为了实现这一点,您需要修改两个模块:您在模块 foo 中添加一个新方法并在模块中利用这个新方法酒吧。然后,如果您将模块 foo 发布到本地存储库,您将确保在您的 bar 模块中获取它,即使其他人在共享存储库中发布了 foo 的新修订(此修订没有您当前添加的新方法)。

但请注意,当您完成开发并将其发布到共享上时,您必须清理本地存储库以从共享存储库中发布的新版本中受益。

还要注意,在本地存储库中找到的模块必须是完整的,即它们必须提供模块描述符和已发布的工件。

多个项目环境中使用 Ivy文档有一个示例publish-localAnt 任务,您可能会发现它很有用。

于 2009-05-22T22:02:15.287 回答