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

Posted

技术标签:

【中文标题】Maven 范围如何通过 ivy 映射到 ivy 配置【英文标题】:How are maven scopes mapped to ivy configurations by ivy 【发布时间】:2011-10-29 13:57:44 【问题描述】:

Maven 存储库,例如 Maven Repository,提供最广泛的依赖管理项目。

Ivy 提供了访问 maven 存储库并从那里下载工件的可能性。这些存储库中只有 pom 文件,没有 ivy.xml。

可以使用ivy resolver that runs in m2compatible mode 检索它们。

<ibiblio name="maven2" m2compatible="true"/>

特别是对于我想知道的这个用例:

默认情况下哪些范围可用以及它们将提供哪些工件 如何将 maven 范围映射到 ivy conf/配置?

【问题讨论】:

您想知道 pom 的外观或您希望实现什么? 我想知道 Ivy 是如何解释 pom 文件的。 Ivy 不解释 pom 文件,因为它不使用 pom 文件。它将使用 ivy 配置文件。 【参考方案1】:

以下两篇文章帮助我更好地理解 Maven 和 Ivy 是如何互操作的

http://www.symphonious.net/2010/01/25/using-ivy-for-dependency-management/ http://lightguard-jp.blogspot.com/2009/04/ivy-configurations-when-pulling-from.html

奇怪的是,我从来没有真正理解 ivy 配置,直到它解释了如何使用它们来模拟 Maven 范围。

以下列表来自www.symphonious.net link,并说明了 pom-files/maven 存储库中的可用配置:

default 运行时依赖项和主工件可以与 本次会议 ma​​ster 仅包含此模块本身发布的工件, 没有传递依赖 compile 这是默认范围,如果未指定则使用。 编译依赖在所有类路径中都可用 提供这很像编译,但表示您期望 JDK 或提供它的容器。它仅在编译类路径中可用,并且不可传递 runtime 这个范围表示不需要依赖 编译,但用于执行。它在运行时和测试中 类路径,但不是编译类路径 test 这个范围表示不需要依赖 应用正常使用,仅供测试使用 编译和执行阶段 system 这个范围类似于提供的,除了你必须 提供明确包含它的 JAR。 sources 此配置包含此的源工件 模块,如果有项目的来源 javadoc 此配置包含此的 javadoc 工件 模块(如果有项目的 JavaDoc) 可选包含所有可选依赖项

【讨论】:

以上是关于Maven 范围如何通过 ivy 映射到 ivy 配置的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ivy 本地存储库用作 maven 存储库

如何为每个用户或系统范围配置 Ivy 缓存目录?

如何使用自定义 gradle 插件而不将其发布到 maven/ivy 存储库?

如何使用 maven 从 ivy 存储库下载工件

如何在公共 Maven/Ivy 存储库中搜索特定类?

使用 IVY 将 SNAPSHOT 工件发布到 Maven - 有啥魔力?