我有一个主要项目,其中模块A依赖于由模块B的构建创建的a.jar文件。当我正在开发时,我正在定期修改B,然后构建B来创建库,然后建立A以使用这些更改。
有没有办法将模块A的常春藤文件指向我的模块B构建创建的jar文件?鉴于我多次迭代,我不想一遍又一遍地检查模块B的罐子到常春藤。在每个模块B构建之后,必须将jar复制到模块A的构建目录结构中也很烦人。
实际上,对我来说情况更糟,因为我在依赖树(A-> B-> CD)中有大约4个模块。如果它只是A和B我可能只是和它一起生活,但我厌倦了在子模块构建之后复制jar文件,并认为是否有办法覆盖常春藤文件依赖行以查看本地然后让生活变得更加简单。
答案 0 :(得分:4)
将Ivy依赖指向本地构建的模块并不是解决此问题的方法。相反,当您构建模块B时,将其发布到您的本地Ivy存储库。解决模块A的依赖关系后,它将从本地存储库中下载模块B.
From the Ivy docs on the local repository:
本地存储库尤其如此 当你想做某事时很有用 不受任何干扰 否则发生在环境中。 这意味着只要常春藤能够 在此存储库中找到模块 它将被使用,无论是什么 在其他人中可用。
例如,如果你有一个模块 声明对模块的依赖 foo在修订版最新。整合, 然后如果找到foo的修订版 本地存储库,它将被使用, 即使是最近的修订版 可在其他存储库中使用。
这对某些人来说可能是令人不安的 你,但想象你必须实施 项目的新功能,以及 为了实现你所需要的 修改两个模块:添加一个新模块 模块foo中的方法并利用它 模块栏中的新方法。然后,如果你 将模块foo发布到您的本地 存储库,你一定会得到它 在你的酒吧模块中,即使有人 否则发布foo的新修订版 共享存储库(此修订版 你没有新的方法 目前正在加入)。
但是当你完成时要小心 你的开发和发布它 分享你将不得不清理你的 本地存储库受益于新的 在共享中发布的版本 库中。
还要注意在模块中找到的模块 本地存储库必须完整, 即他们必须同时提供一个模块 描述符和已发布的 伪影。
Using Ivy in multiple projects environment文档有一个示例publish-local
Ant任务,您可能会发现它很有用。