【发布时间】:2012-06-18 15:24:41
【问题描述】:
我无法理解 latest.integration 的工作原理。
我有一个示例没有给出以下内容中提到的输出: http://ant.apache.org/ivy/history/latest-milestone/tutorial/defaultconf.html
也就是说,无论发布时间如何,本地解析器都优先于其他解析器。
我的 ivysettings.xml 是这样的:
<resolvers>
<chain name="download-chain" returnFirst="false" >
<url name="nexus-repo" m2compatible="true" >
<artifact pattern="${nexus}/[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]" />
<ivy pattern="${nexus}/[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" />
</url>
<resolver ref="local" />
</chain>
</resolvers>
在这里我声明我有一个 nexus url 存储库和一个对默认本地的引用。当我想解决我的依赖关系时,我会使用这个链。
我构建指定的工件并将其发布到本地,状态为“集成”,修订版为“HEAD”(对我们来说类似于 SNAPSHOT),首先使用本地解析器:
<ivy:publish
overwrite="yes"
update="true"
artifactspattern="${project.dist.dir}/[artifact]-[revision](-[classifier]).[ext]"
resolver="local"
settingsRef="ivy.nexus"
/>
并再次重建并将其发布到 nexus 存储库:
<ivy:publish
overwrite="yes"
update="true"
artifactspattern="${project.dist.dir}/[artifact]-[revision](-[classifier]).[ext]"
resolver="publish-url"
forcedeliver="true"
settingsRef="ivy.nexus"
/>
我有另一个项目将先前的工件声明为具有修订版“latest.integration”的依赖项。
我希望无论声明的解析器的顺序如何,都应该从本地存储库下载工件。但事实并非如此。下载的工件始终是首先提到的解析器。更改“本地”解析器的名称没有任何影响。顺序永远是最重要的。
我尝试将 changed="true" 附加到我的依赖项中。它没有帮助。
在这个问题中: Ivy: Forcing local snapshot for dependency
提问者提到了一个甚至不同的行为,即获取最新的(解析器的顺序甚至无关紧要)。
所以总结一下并抱歉延长: 神器获取方式:
1) 无论位置如何,始终是 latest.integration(最新的)。
2) 始终来自本地,即使其他位置有更新的集成版本。
3) 我就这么无知吗?
【问题讨论】:
-
您是否在上述任一发布结构中的任何位置看到集成一词 - 没有。实际上,您在发布期间根本没有指定状态,因此 latest.integration 将不起作用。