gpt4 book ai didi

maven - 使用 ivy 将多个 Artifact 发布到 Maven 存储库

转载 作者:行者123 更新时间:2023-12-02 22:17:32 30 4
gpt4 key购买 nike

我使用不同的 ivy 配置将一个组件的几个 atiacts 发布到一个 maven 存储库。例如,我采用以下方式 ( Ivy Documentation ) 来做同样的事情..

<ivy-module version="1.0">
<info organisation="org.apache" module="filter"/>
<configurations>
<conf name="api" description="only provide filter framework API"/>
<conf name="homemade-impl" extends="api" description="provide a home made implementation of our api"/>
</configurations>

<publications>
<artifact name="filter-api" type="jar" conf="api" ext="jar"/>
<artifact name="filter-hmimpl" type="jar" conf="homemade-impl" ext="jar"/>
</publications>

</ivy-module>

根据上面的配置,生成的神器是filter-api.jarfilter-hmimpl.jar,我生成了一个pom文件 filter.pom 并将其发布到 Maven 存储库中。

现在,当我尝试使用以下方法解析另一个组件中的 Artifact filter-api 时......

    <dependency org="org.apache" name="filter" rev="3.1" conf="default->api"/>

但它不工作,我相信我的 filter.pom 应该包含一些像这样的模块,让它工作..

    <modules>
<module>api</module>
<module>homemade-impl</module>
</modules>

我是否正确,如果是,我如何将不同的 ivy conf 映射到 maven 中的模块。

最佳答案

将多个文件发布到 Maven 存储库很棘手,因为 Maven 模块通常包含单个 Artifact 。 Maven 模块确实支持额外的模块 Artifact ,这些 Artifact 在 Maven 依赖项中使用“分类器”属性进行引用。

以下答案提供了将多个文件发布到 Maven 模块的示例:

观察 ANT 脚本正在使用 makepom生成 POM 文件,并且这些文件被认为是已发布的 Artifact ( Ivy 出版物部分的一部分)。

有关更多背景信息,您可能对以下处理 Maven“范围”和 ivy“配置”之间差异的答案感兴趣。

最后,如果您的 ivy 构建使用配置,则可以配置 makepom在配置和范围之间映射的任务:

<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom"/>
<mapping conf="api" scope="compile"/>
</ivy:makepom>

关于maven - 使用 ivy 将多个 Artifact 发布到 Maven 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14210381/

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