我使用不同的常春藤配置向maven存储库发布了一些组件.作为一个例子,我采取以下方式(常春藤文档)做同样的..
<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>
Run Code Online (Sandbox Code Playgroud)
根据上面的配置,生成的工件是filter-api.jar和filter-hmimpl.jar,我生成了一个pom文件filter.pom并将其发布到maven存储库中.
现在,当我尝试使用以下内容解决另一个组件中的工件filter-api时..
<dependency org="org.apache" name="filter" rev="3.1" conf="default->api"/>
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我相信我的filter.pom应该包含这样的一些模块,以使其工作..
<modules>
<module>api</module>
<module>homemade-impl</module>
</modules>
Run Code Online (Sandbox Code Playgroud)
我是否正确,如果是,我怎么能将不同的常春藤配置映射到maven中的模块.
将多个文件发布到Maven存储库很棘手,因为Maven模块通常包含一个工件.Maven模块确实支持其他模块工件,这些工件使用"classifier"属性在Maven依赖项中引用.
以下答案提供了将多个文件发布到Maven模块的示例:
观察到ANT脚本正在使用makepom生成POM文件,并且这些文件被认为是已发布的工件(常春藤出版物部分的一部分).
有关更多背景信息,您可能会对以下答案感兴趣,该答案涉及Maven"范围"和常春藤"配置"之间的差异.
最后,如果您的ivy构建使用配置,则可以配置makepom任务以在配置和范围之间进行映射:
<ivy:makepom ivyfile="${build.dir}/ivy.xml" pomfile="${build.dir}/${ivy.module}.pom"/>
<mapping conf="api" scope="compile"/>
</ivy:makepom>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1919 次 |
| 最近记录: |