我无法理解 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)我就那么无知吗?