当快照依赖项更新时,我无法让Ivy更新缓存。解析器(to)具有以下设置:
<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(也许不正确!)没有一个解决方法是相关的。
我应该放弃快照而只使用带有"集成"的显式版本吗?最新的"动态版本依赖关系"?我担心,当我们为多个主要版本进行集成构建时,这可能会以失败告终。此时,我们需要将主要版本分离到单独的存储库中,或者将主要构建号放在工件名称中,或者其他同样笨拙的东西,只是为了进行"集成"。最新的"工作。
我不喜欢在与Maven存储库管理器交谈时使用url解析器。问题是Maven对快照修订有特殊且相当独特的处理.....url解析器更适合用于ivy repository。
我使用Nexus,但以下内容也适用于Artifactory。下面的设置文件设置了Maven Central和我的两个托管存储库(Maven存储库有两种风格,release或snapshot):
<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从开发构建(或快照)中分离发布的哲学。这也解释了Maven的一个非常笨拙的方面……发布工件的两种不同方式…
我怀疑你想做的是沿着作者的路线,即设置CD管道线。在这种情况下,每个构建都是一个潜在的版本,应该这样对待(没有快照允许的动态依赖)。
我建议将快照限制为仅针对开发人员的构建。只部署发布候选版本。这种方法的问题在于管理大量的发行版。一些存储库管理器(Nexus, Artifactory, Archiva)提供了"分期"功能,可以证明或丢弃没有通过质量闸门的版本。
<标题>更新2 h1> 果你正在使用ivy将快照发布到Maven存储库中,那么有几个问题:- Ivy不支持发布带有时间戳的快照 Ivy不更新Maven模块的metadata.xml文件
在我看来,时间戳文件是使用快照的首要杀手级特性之一。使用ivy只能提供最新的文件(覆盖之前的最新文件)。
有解决这些问题的方法:
- 正如第二个链接中建议的那样,您可以完全忽略元数据(将"useMavenMetadata"属性设置为false),并默认返回ivy的旧文件名比较机制。这只解决了ivy客户端的问题。
- 存储库管理器应该能够重新生成元数据文件(Nexus至少有一个任务来完成这个任务)。
- 使用Maven ANT任务
最后一个建议并不像看起来那么疯狂。首先,这是我所知道的支持时间戳快照的唯一方法,其次,Maven客户端似乎做了很多额外的处理(更新模块元数据),这些处理基本上没有文档记录。
标题>标题>经过几天的斗争…
问题是对于
checkmodified="true" changingMatcher="regexp"
要在