将常春藤依赖指向本地文件?

Chr*_*sel 2 java ivy

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

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

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

Sim*_*hke 5

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

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

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

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

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

但要小心,当您完成开发并将其发布到共享库时,您必须清理本地存储库才能从共享存储库中发布的新版本中受益。

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

使用常青藤在多项目环境文档有一个例子publish-localAnt任务,你可能会发现有用。