我们设置常春藤的方式是干线或特定分支上的所有项目都具有相同的基础类罐的版本号。例如,设置了trunk,因此所有jar都是5.4,所有使用这些jar的项目都要求5.4罐。
我们为将在5.5版中引入的特定功能分支干线。以前,我们只需将该分支上的修订版本设置为修订版5.5。我们去Maven存储库,并将5.4罐复制到5.5版,这样项目就可以构建。此功能分支上的罐子将作为5.5罐放置在仓库中。
然而,这引起了问题。想象干线设置为修订版5.3,我们预计该功能将在修订版5.5中完成。我们将5.3罐重复为5.5罐,让开发人员在功能分支上工作。
现在,假设我们将主干修订版设置为5.4。特定jar在版本5.4中进行了修改,但不一定在功能分支上。现在,主干上的jar具有在功能分支中找不到的更改。稍后,我们将trunk移至版本5.5,并将分支上的更改合并回trunk。
现在,一个项目使用的是特定的5.5 jar,它实际上是基于修订版5.3。 5.4中的变化不存在。
为了解决这个问题,我们正在尝试一种新策略,其中功能分支被赋予非数字修订版。这样,当我们准备将分支合并回主干时,我们会复制5.4罐的最新版本5.5。然后,任何合并回主干的内容都会导致重建。
现在的问题是冲突经理。我们在分支上有版本“fb-foo”,在trunk上有“5.4”。如果在分支上指定了一个特定的jar foo.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>
但是,根据常春藤报告,版本5.4
仍然优于版本fb-foo
。
有没有办法改变这个?如果我使用5.4-foo
作为版本号怎么办?