使用Ivy,我是否需要一个Filesystem解析器来从本地存储库或缓存中读取?

时间:2013-01-09 00:14:21

标签: ivy

考虑到那里的文档数量,常春藤可能令人惊讶地混乱。以下是我在这个时候对Ivy感到困惑的事情:

Main Concepts页面解释了缓存。

Adjusting default settings教程解释了本地存储库。

如果我同时拥有本地缓存​​和本地存储库,为什么还需要File System Resolver?我需要它,以便Ivy使用本地存储库或缓存吗?

如果没有,它看起来像文件系统解析器的工作方式首先我会下载并组织所有依赖项和传递依赖项。然后我将文件系统解析器指向这些文件。然后,Ivy会从我的文件系统中读取并将文件复制到本地存储库并缓存。

我确定我没有正确理解这一点 - 这看起来非常笨重。我很欣赏本地存储库,缓存和文件系统解析器所指向的本地存储库之间差异的任何启示。

1 个答案:

答案 0 :(得分:0)

首先,存储库和缓存是两个不同的功能概念。

存储库,本地,文件系统或URL,是保存工件的地方,并且大部分也是共享的。

“公共”存储库包含工件并提供它们。 Nexus或ar​​tifactory是从公共存储库缓存工件副本的存储库示例,通常被命名为“共享”存储库。

“本地”存储库大部分是FileSystem存储库。它们提供工件(这些工件的来源也将在以后出现),并且这些工件存在于您的文件系统中。

现在,无论源(FileSystem,URL,iBiblio)如何,您的项目正在解析的任何工件都将放入缓存中。

对我来说,一个直截了当的原因是在检索它们之后对它们进行通用行为(将它们从原始位置带出来)。

缓存位于您的机器文件系统上,它包含有关每个工件的来源以及时间或分辨率的信息。任何操作都将发生在工件上(构建类路径,或将它们从一个地方复制到另一个地方“检索”)将在缓存中的工件上执行。

希望这有点帮助。

回答关于本地存储库的问题(我问过);本地存储库中填充了项目生成的工件,例如项目A生成并将在项目B中使用的SNAPSHOT。它们不是释放,通常是暂时的。

最后,本地存储库是一个FileSystem存储库,但并非所有FileSystem都是本地存储库。从我的头脑中,我可以在所有人都可以访问的FileSystem上使用共享存储库(在团队中共享工件)而不使用Nexus(这是一个URL解析器)。