使用常春藤将多个工件发布到maven存储库

我使用不同的常春藤配置向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.jar和filter-hmimpl.jar,我生成了一个pom文件filter.pom并将其发布到maven存储库中.

现在,当我尝试使用以下内容解决另一个组件中的工件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>

我是否正确,如果是,我怎么能将不同的常春藤配置映射到maven中的模块.

将多个文件发布到Maven存储库很棘手,因为Maven模块通常包含一个工件. Maven模块确实支持其他模块工件,这些工件使用“classifier”属性在Maven依赖项中引用.

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

> how to publish 3rdparty artifacts with ivy and nexus
> Convert ivy.xml to pom.xml

观察到ANT脚本使用makepom生成POM文件,并且这些文件被认为是已发布的工件(常春藤出版物部分的一部分).

有关更多背景信息,您可能会对以下答案感兴趣,该答案涉及Maven“范围”和常春藤“配置”之间的差异.

> How are maven scopes mapped to ivy configurations by ivy

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

<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom"/>
   <mapping conf="api" scope="compile"/>
</ivy:makepom>
https://stackoverflow.com/questions/14210381/publishing-multiple-artifacts-to-maven-repository-using-ivy

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:使用常春藤将多个工件发布到maven存储库