gpt4 book ai didi

ant - Ivy:检索在 Nexus 及其依赖项中发布的快照

转载 作者:行者123 更新时间:2023-12-01 13:04:37 27 4
gpt4 key购买 nike

我正在使用 Ivy 使用以下 Ant 目标将构建的 Jar 的快照发布到本地托管的 Nexus 存储库。

<target name="publish">
<ivy:publish resolver="nexus_snapshot" pubrevision="SNAPSHOT" overwrite="true">
<artifacts pattern="${dist.dir}/[artifact].[ext]" />
</ivy:publish>
</target>

这似乎工作正常,导致 Jar 及其关联的 ivy.xml 出现在存储库中(文件名为 mymodule-SNAPSHOT.jar 和 ivy-SNAPSHOT.jar)。

稍后,在另一个构建脚本中,我希望将 Jar 及其相关依赖项(即在其 ivy.xml 中指定的)检索到一个目录中。

这是我正在使用的 Ant 目标。

<target name="deploy">
<delete dir="deploy" />
<mkdir dir="deploy" />
<ivy:settings file="${ivy.dir}/ivy_deploy_settings.xml" />
<ivy:retrieve organisation="myorg" module="mymodule"
inline="true" revision="SNAPSHOT" pattern="deploy/[artifact].[ext]"/>
</target>

这会将 Jar 检索到目录,但不会检索其依赖项。另外,如果我添加

conf="impl"

检索失败,因为没有找到配置。

因此,检索似乎根本没有引用 ivy.xml,因此没有解决依赖关系。

这应该有效还是我误解了什么?

最佳答案

我现在已经解决了这个问题。我认为问题只是 Nexus 使用 POM 文件而不是 Ivy 文件工作(至少默认情况下 - 我看不到任何相关的配置选项)。

因此,解决方案是生成合适的 POM 并将其与 Jar 一起发布。

<target name="publish">
<property name="generated.ivy.file" value="${dist.dir}/ivy.xml" />
<ivy:deliver deliverpattern="${generated.ivy.file}"
organisation="${ivy.organisation}"
module="${ivy.module}" status="integration"
revision="${ivy.revision}"
pubrevision="SNAPSHOT"
conf="impl" />

<ivy:makepom ivyfile="${generated.ivy.file}"
pomfile="${dist.dir}/${ivy.module}.pom"/>

<ivy:publish resolver="nexus_snapshot" pubrevision="SNAPSHOT"
publishivy="false" status="integration" overwrite="true">
<artifacts pattern="${dist.dir}/[artifact].[ext]" />
<artifact name="${ivy.module}" type="pom" ext="pom"/>
</ivy:publish>
</target>

请注意,我首先为当前模块(和我想要的配置)生成一个 Ivy 文件,以从中创建 POM。

关于ant - Ivy:检索在 Nexus 及其依赖项中发布的快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com