2009-05-22 148 views
2

我有一个主要项目,其中模块A依赖于由模块B的构建创建的aa .jar文件。在开发过程中,我定期修改B,然后构建B以创建该库,然后构建A使用这些更改。对本地文件的常春藤依赖关系?

有没有办法将模块A的常青藤文件指向我的模块B build创建的jar文件?鉴于我正在迭代多次,我不想一遍又一遍地检查模块B的jar进入ivy。在每个模块B构建之后,还需要将jar复制到模块A的构建目录结构中,这也令人讨厌。

其实,对我来说更糟,因为我在依赖关系树(A-> B-> CD)中有大约4个模块。如果它只是A和B,我可能只是想和它一起生活,但是在子模块构建之后,我厌倦了复制jar文件,并且想到如果有一种方法可以重写ivy文件依赖关系行以在本地查看'让生活变得更简单。

+0

您是在IDE中还是从命令行工作?你是否需要这两种情况下的依赖关系,还是只需要一个用于调试? – Jherico 2009-05-23 03:18:50

回答

4

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

From the Ivy docs on the local repository

,当你想要做的事 没有被任何其他 环境中发生的事情所干扰的本地仓库是特别有用 。 这意味着只要常春藤能够 在这个存储库中找到一个模块 它将被使用,不管其他人可以使用什么 。

举例来说,如果你有一个模块 在修订latest.integration模块 FOO声明依赖,那么如果FOO的修订 本地库中找到,它会被用来 , 即使其他存储库中可用的更新版本是 。

这可能是令人不安的一些 你,但是想象一下,你必须实现 一个项目一个新的功能,并在 为了实现这一目标,你需要 修改两个模块:你在添加新 方法模块foo并在模块栏中利用此新的方法 。然后,如果你 发布模块FOO到本地 仓库,你一定会得到它 你的酒吧模块中,即使有人 其他人发布的foo新修订 共享库(这个版本不具有 新方法你现在正在添加 )。

但要小心,当您完成 您的开发和发布的 共享你将不得不清理你的 本地资源库,从发表在共享 库新 版本中获益。

还要注意的是,在 本地存储库中找到的模块必须是完整的, 即它们必须提供一个模块 描述符和出版 文物。

Using Ivy in multiple projects environment文档有一个示例publish-local您可能会觉得有用的Ant任务。

相关问题