在更新快照依赖项时,我无法让Ivy更新缓存。解析器(具有以下设置:
<url name="xxx" m2compatible="false"
checkmodified="true" changingMatcher="regexp"
changingPattern=".*-SNAPSHOT.*">
示例工件文件名(在Artifactory中)是:
my-jar-1.999-SNAPSHOT.jar
详细的Ant解析日志包括:
[NOT REQUIRED] com.myorg#my-module;1.999-SNAPSHOT!my-jar.jar
工件上没有POM。
解析器位于链条解析器下方;它们都具有所有相关属性集。我已阅读https://issues.apache.org/jira/browse/IVY-938和https://issues.apache.org/jira/browse/IVY-1221,包括所有评论和AFAICT(可能不正确!)没有相关的解决方法。
我应该放弃快照,只使用带有“integration.latest”动态版本依赖项的显式版本吗?我担心当我们为多个主要版本进行集成构建时,这可能最终会失败。此时,我们需要将主要版本拆分为单独的存储库,或者将主要版本号放在工件名称中,或者同样笨重的东西,只是为了使“integration.latest”工作。
答案 0 :(得分:5)
在与Maven存储库管理器交谈时,我不喜欢使用url解析器。 问题是Maven对快照修订有特殊而且相当独特的处理方式..... url解析器更适合用于对付常春藤存储库。
我使用Nexus,但以下内容也适用于Artifactory。以下设置文件设置了Maven Central和我的两个托管存储库(Maven存储库有两种版本,即发布版或快照版):
<ivysettings>
<settings defaultResolver="repos" />
<resolvers>
<chain name="repos">
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="my-releases" m2compatible="true" root="https://myhost/releases"/>
<ibiblio name="my-snapshots" m2compatible="true" root="https://myhost/snapshots"/>
</chain>
</resolvers>
</ivysettings>
您会注意到我正在使用具有内部逻辑的ibilio解析程序来解密Maven的特殊快照处理。
当我需要快照修订版时,我认为它明确地声明如下:
<ivy-module version="2.0">
<info organisation="myOrg" module="Demo"/>
<dependencies>
<dependency org="myOrg" name="myModule" rev="2.7-SNAPSHOT"/>
..
</dependencies>
</ivy-module>
幕后,ibilio解析程序正在读取Maven存储库元数据文件,以确定应从快照存储库中提取哪个带时间戳的工件。
我建议阅读以下演示文稿:
它很好地概述了将版本与开发版本(或快照)分开的Maven理念。它还解释了Maven非常笨重的一个方面......发布工件的两种不同方式......
我怀疑你正在尝试做的是沿着作者设置CD管道的路线。在这种情况下,每个构建都是一个潜在的版本,应该这样对待(没有快照允许的动态依赖)。
我建议将快照限制为仅限开发人员的版本。仅部署候选发布版。这种方法的问题在于管理大量和大量的版本。一些存储库管理器(Nexus,Artifactory,Archiva)提供&#34; staging&#34;这些功能可以证明或丢弃不通过质量收费站的版本。
如果您使用ivy将快照发布到Maven存储库,那么有几个问题:
在我看来,带时间戳的文件是首先使用快照的杀手级功能之一。使用常春藤,它只能提供最新的文件(覆盖以前的最新文件)。
有解决这些问题的解决办法:
最后的建议并不像看起来那么疯狂。首先,它是我知道支持带时间戳的快照的唯一方式,其次,Maven客户端似乎做了很多额外的处理(更新模块元数据),这些处理基本上没有记录。
答案 1 :(得分:2)
经过几天的奋斗......
问题在于
checkmodified="true" changingMatcher="regexp"
要处理&lt; resolver&gt;,它必须是在层次结构行中的每个解析器 - 所有父&lt;链&gt;解析器和&lt; url&gt;,&lt; local&gt;或&lt; ibiblio&gt;解析器底部。