0

我们设置 Ivy 的方式是,主干或特定分支上的所有项目对于我们的基础类 jar 具有相同的版本号。例如,设置了trunk,所以所有的jar都是5.4的,所有使用这些jar的项目都请求5.4的jar。

我们为将在 5.5 版中引入的特定功能从主干中分离出来。以前,我们只需将该分支上的修订版设置为修订版 5.5。我们将转到我们的 Maven 存储库,并将 5.4 jar 复制到 5.5 版本,以便可以构建项目。此功能分支上的 jar 将作为 5.5 jar 放置在 repo 中。

然而,这引起了问题。想象一下,trunk 设置为 5.3 版,我们预计该功能将在 5.5 版中完成。我们将 5.3 jar 复制为 5.5 jar,并让开发人员在功能分支上工作。

现在,假设我们将主干修订版设置为 5.4。特定的 jar 在 5.4 版本中被修改,但不一定在功能分支上。现在主干上的 jar 在功能分支中找不到更改。稍后,我们将主干移动到 5.5 版本,并将分支上的更改合并回主干。

现在,一个项目使用真正基于修订版 5.3 的特定 5.5 jar。5.4 中的更改不存在。

为了解决这个问题,我们正在尝试一种新策略,其中功能分支被赋予非数字版本。这样,当我们准备好将分支合并回主干时,我们为 5.5 复制最新版本的 5.4 jar。然后,任何合并回主干的东西都会导致重建。

现在的问题是冲突管理器。我们在分支上有版本“fb-foo”,在主干上有“5.4”版本。如果foo.jar在分支上指定了特定的 jar(修订fb-foo和另一个请求的 jar 也要求该特定的 jar,但是 5.4 版,我们将拉下 5.4 版本。我们更愿意拉下fb-foo此分支上项目的版本.

我尝试更改我们的主 ivysettings-public.xml 文件:

<ivysettings>
    <resolvers>
        <ibiblio name="public"
            m2compatible="true"
            checkmodified="true"
            root="http://buildl01.tcprod.local/artifactory/libs-release" />
    </resolvers>
    <latest-strategies>
        <latest-revision name="mylatest-revision" usedefaultspecialmeanings="false">
            <specialMeaning name="fb-foo"  value="99"/>
        </latest-revision>
    </latest-strategies>
</ivysettings>

然而,根据 Ivy 的报告, version5.4仍然比 version 更受欢迎fb-foo

有没有办法改变这个?如果我用作5.4-foo版本号怎么办?

4

0 回答 0