常春藤解决的最佳链条

时间:2015-08-05 13:47:35

标签: ant continuous-integration ivy archiva

我有一些项目集成了常春藤,我在两个可能的存储库中发布我的工件,本地,响应文件夹和beta,响应安装了archiva的服务器以及我共享我的jar的地方和我的同事 现在问题是:我需要找到一种方法来构建一个解决方案链来做这件事:

  1. 在各个存储库之间搜索latest.integration。
  2. 检索那个罐子。
  3. 如果那个jar已经在我的缓存中,则不必下载它。
  4. 如果缓存中的工件在其中一个存储库中具有相同版本的工件,请按时间顺序排序。
  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让我的应用程序完全跳过我的缓存,并且我的项目每次都会继续下载工件。

1 个答案:

答案 0 :(得分:0)

我发现解决方案在stackoverflow中的不同问题之间进行搜索,并在常春藤社区的一些问题解决方案中与同事一起搜索。
文件系统需要它自己的最新时间策略,每个解决方案都会注意到自己的模块上次修改日期。
这里是代码中的mod:

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