Apache IVY 到 Maven:MakePom 任务

Posted

技术标签:

【中文标题】Apache IVY 到 Maven:MakePom 任务【英文标题】:Apache IVY to Maven : MakePom Task 【发布时间】:2014-11-27 07:22:42 【问题描述】:

如何通过任务 makepom 将 IVY 准确转换为 Maven 配置?

1.) 例如,IVY“默认”配置在其Maven Scope 中没有等效项:

我明白......你可以把它放在生成任务中,makempom 会做以下等价:

<ivy:makepom ..... conf=”default,compile,runtime”>

   <mapping conf="default" scope="compile"/>
   <mapping conf="compile " scope="compile"/>
   <mapping conf="runtime" scope="runtime"/>
</ivy>

2.) 但是当您在 IVY 中有动态配置时会发生什么,例如,使用这个 IVY 配置,例如“myConf”:

   <configurations defaultconf="default->default">
    <conf name="default" description="shortcut to runtime and master dependencies"/>
    <conf name="compile" description="Used ONLY at compile time" />
    <conf name="myConf" description="Not required at compile time BUT required for execution and so deployed to a server"/>

</configurations>

在这种从IVY翻译成Mave的案例中存在哪些可能性???特别是如果 un 有“n”个不同的配置,那么必须将“n”个配置配置到具有相应范围的 makepom 任务中似乎不太实际。另外我注意到,如果你没有在任务 makepom 中放置任何东西,生成的 pon 没有范围,并且总是被置于可选的:

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
   <version>3.3</version>
   <optional>true</optional>
</dependency>

这个 maven 代码来自一个 ivy 文件,其中 commons-lang3 库被置于“默认”设置:

<dependency org="org.apache.commons" name="commons-lang3" rev="3.3"  conf="default->default"/>

【问题讨论】:

【参考方案1】:

我自己回答。

只能使用 Maven 范围。如果 ivy 中有任何配置,它在 Maven 上没有他的等效范围,你必须在 makepom 任务中定义与 Maven 范围的等效,

例如:

【讨论】:

正确。我也会看看反比关系。 ivy 如何解释远程 Maven POM 文件和范围。请参阅:***.com/questions/7104364/… 与 ivy 配置相比,Maven 在这方面不太灵活。最好了解这些限制,然后调整您的用法以适应它们。

以上是关于Apache IVY 到 Maven:MakePom 任务的主要内容,如果未能解决你的问题,请参考以下文章

ivy 配置 maven代理

Apache IVY 无法解析 MAVEN 项目的依赖关系

Apache Ant + Ivy 构建了一个部署到本地 Tomcat 的 Web 应用程序

使用 Apache Ivy 获取 Hibernate Core 和 Hibernate Annotations 时遇到问题(但它也与 Maven2 相关。)

Maven 范围如何通过 ivy 映射到 ivy 配置

我不知道如何使用 Apache Ivy