【问题标题】:Point ivy dependency at a local file?将常春藤依赖项指向本地文件?
【发布时间】:2010-10-28 08:33:56
【问题描述】:

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

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

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

【问题讨论】:

  • 您是在 IDE 中工作还是在命令行中工作?在这两种情况下都需要依赖项还是只在一种情况下需要依赖项进行调试?

标签: java ivy


【解决方案1】:

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

From the Ivy docs on the local repository:

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

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

这可能会让一些人感到不安 你,但想象你必须实施 项目中的新功能,并且在 为了实现你需要 修改两个模块:你添加一个新的 模块 foo 中的方法并利用它 模块栏中的新方法。那么如果你 将模块 foo 发布到您的本地 存储库,你一定会得到它 在你的酒吧模块中,即使有人 否则发布 foo 的新修订版 共享存储库(此修订版 没有你的新方法 目前正在添加)。

但要小心,完成后 您的开发并将其发布在 分享你将不得不清理你的 本地存储库以受益于新的 在共享中发布的版本 存储库。

另请注意,在 本地存储库必须完整, 即他们必须同时提供一个模块 描述符和已发布的 人工制品。

Using Ivy in multiple projects environment 文档中有一个示例 publish-local Ant 任务,您可能会发现它很有用。

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 2017-08-06
    • 2017-08-13
    • 2014-05-07
    • 2015-01-23
    • 2011-01-23
    • 2012-01-10
    • 2013-10-14
    • 2010-11-06
    相关资源
    最近更新 更多