常春藤决心的最佳链条

optimal chain for resolve in ivy

我有一些集成了 ivy 的项目,我在两个可能的存储库中发布了我的工件,一个是本地存储库,它响应一个文件夹,另一个是 beta 存储库,它响应一个安装了 archiva 并与我的 jar 共享的服务器同事。 现在的问题是:我需要找到一种方法来构建执行此操作的解析链:

  1. 在 latest.integration.
  2. 的各个存储库之间搜索
  3. 找回那个罐子。
  4. 如果该 jar 已经在我的缓存中,则不必下载它。
  5. 如果缓存中的工件与某个存储库中的工件版本相同,则采用最新的时间顺序。

现在我已经尝试了所有设置

常春藤设置

<chain name="resolvechain">
    <ibiblio name="b1" root="archivaURLforbeta" m2compatible="true" checkmodified="true" latest="latest-time"/>
    <filesystem name="b2" checkmodified="true" >
        <artifact pattern="${ivy.local.default.root}/${ivy.local.default.artifact.pattern}" />
    </filesystem>
    <ibiblio name="b3" root="archivaURLforrelease" m2compatible="true" latest="latest-time"/>
    <ibiblio name="b4" m2compatible="true"/>
</chain>

这是 Build.xml 文件中解析的目标:

<ivy:settings file="${archiva.set}" />
<ivy:resolve refresh="true" resolveMode="dynamic" changing="true"/>
<ivy:retrieve sync="true" overwritemode="newer" pattern="./lib/[artifact]-[type]-[revision](.[ext])" />

这是一个关于如何在 ivy.xml 文件

中写入依赖项的示例
<dependency org="organization" name="module-name" rev="latest.integration"  transitive="false" conf="default" />

问题有两个: 首先根据我的需要有没有错误? 其次,我正在尝试做的事情可能吗?

我问了这两个问题,因为在我看来,将 checkmodified 设置为 true 并更改为 true 让我的应用程序完全跳过我的缓存,并且我的项目每次都继续下载工件。

我在 Whosebug 中找到了在不同问题之间搜索的解决方案,并与我的同事在常春藤社区中找到了一些问题解决方案。
文件系统需要它自己的最新策略,每个解析记录它们自己的mod规则最后日期修订。
这里代码中的mod:

<filesystem name="b2" checkmodified="true" latest="latest-time">
    <artifact pattern="${ivy.local.default.root}/${ivy.local.default.artifact.pattern}" />
</filesystem>