Ivy,主配置是什么,为什么它不拉动jvyaml?

2023-12-26

我有以下常春藤文件:

<configurations defaultconfmapping="buildtime">
    <conf name="buildtime" visibility="private" description="Libraries needed only for compilation" />
    <conf name="runtime" description="Libraries only needed at runtime" />
    <conf name="test" description="Libraries only needed for testing" />
</configurations>

<dependencies>
  <dependency org="net.java.dev" name="jvyaml" rev="0.2.1" conf="runtime" />
  <dependency org="org.apache.solr" name="solr-core" rev="3.6.0" conf="runtime" />

</dependencies>

我有一个蚂蚁检索任务,如下所示:

<target name="retrieve-all" depends="resolve">
    <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]" conf="*" />
</target>

奇怪的是,所有 solr 依赖项都按照我的预期下载到 lib/runtime 中,但 jvyaml 模块却没有!它“解析”,但不会下载到 lib/runtime 目录中,除非我将依赖项声明更改为:

<dependency org="net.java.dev" name="jvyaml" rev="0.2.1" conf="runtime->master" />

这个主配置是什么?为什么需要拉取 jvyaml jar,而不是 solr?

Thanks


我建议按如下方式重组您的配置:

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="compile" description="Libraries needed only for compilation" />
        <conf name="runtime" description="Libraries only needed at runtime" extends="compile" />
        <conf name="test" description="Libraries only needed for testing" extends="runtime" />
    </configurations>

    <dependencies>
        <dependency org="net.java.dev" name="jvyaml" rev="0.2.1" conf="runtime->default" />
        <dependency org="org.apache.solr" name="solr-core" rev="3.6.0" conf="runtime->default" />
    </dependencies>

</ivy-module>

引入的重要变化:

  1. 使用更标准的“编译”配置
  2. 配置继承使用“扩展”属性。然后,编译依赖项可以自动包含在运行时和测试配置中。
  3. 使用配置映射,例如:conf="runtime->default"。这使得哪个本地配置与哪个远程配置相关联变得显而易见。

配置映射解释

配置是 ivy 的一项强大功能。当 ivy 下载 Maven 模块时,它会执行内部转换并分配一组标准配置,如以下答案所示:

  • ivy如何将maven范围映射到ivy配置 https://stackoverflow.com/questions/7104364/how-are-maven-scopes-mapped-to-ivy-configurations-by-ivy/7116577#7116577

声明依赖项时,最好始终使用配置映射,这样就可以明确依赖项工件的分配位置。

例如:

<dependency org="??" name="??" rev="??" conf="runtime->default" />

在这里,我们说我们希望远程模块的默认依赖项与本地运行时配置相关联。

实际上,您实际上只需要两个远程配置映射:

  • default:远程模块的工件及其所有运行时传递依赖项
  • master:仅远程模块的工件(无传递依赖)

总之,我认为你的问题是由于远程 Maven 模块的“运行时”范围不包括 Maven 模块的工件而引起的,而是你得到了模块 jvyaml 不存在的传递依赖项:-(

一些额外的建议

我还建议生成一份ivy依赖管理报告,如下所示:

<target name="init" description="Resolve dependencies and populate lib dir">
    <ivy:resolve/>
    <ivy:report todir="${build.dir}/ivy-report" graph="false"/>
    <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]"/>
</target>

该报告将有助于解释每个依赖项如何最终出现在不同的配置上。对于确定如何管理传递依赖项也非常有用。

最后,这是配置继承得到回报的地方,创建 ivy 管理的 ANT 类路径:

<target name="init" description="Resolve dependencies and set classpaths">
    <ivy:resolve/>
    <ivy:report todir="${build.dir}/ivy-report" graph="false"/>

    <ivy:cachepath pathid="compile.path" conf="compile"/>
    <ivy:cachepath pathid="runtime.path" conf="runtime"/>
    <ivy:cachepath pathid="test.path"    conf="test"/>
</target>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ivy,主配置是什么,为什么它不拉动jvyaml? 的相关文章

随机推荐

  • 结构化分析中的数据流程图的 UML 类似物是什么?

    早在黑暗时代 20世纪80年代中期 我用过数据流程图 http en wikipedia org wiki Data Flow Diagram from 结构化分析 http en wikipedia org wiki Structured
  • nvd3.js:无法将 onClick 事件与 svg 中的数据点绑定

    我试图将数据点与 onclick 事件绑定 以便我可以显示一个带有一些附加详细信息和链接的覆盖框 我正在使用 nv point类来访问数据点 问题是我无法将 onclick 事件注册到这些数据点 这是代码 d3 selectAll nv p
  • Cassandra .csv 导入错误:批量太大

    我正在尝试通过复制命令将数据从 csv 文件导入到 Cassandra 3 2 1 文件中只有 299 行 14 列 我收到错误 无法导入 299 行 InvalidRequest code 2200 无效查询 message 批次太大 我
  • 使用 javascript 更快地选择元素

    我想知道是否有更快的方法来选择它 document getElementById container getElementsByTagName p 0 getElementsByTagName strong 1 innerText 结构是
  • 从基类方法克隆派生类

    我有一个抽象基类Base它具有一些共同的属性 以及许多实现不同逻辑但很少有附加字段的派生属性 public abstract Base protected int field1 protected int field2 protected
  • 获取 x86-64 指令的大小

    我需要一个可以计算 x86 64 指令长度的函数 例如 它可以像这样使用 char ret 0xc3 size t length instructionLength ret length在此示例中将设置为 1 我不想包含整个反汇编库 因为我
  • 编译静态库与标准库的链接(静态)

    我正在尝试编译一个静态库 我们称之为library a 该库消耗标准库的资源 该库可以通过某种方式静态链接标准库 我已经证明了类似的事情 g c library static libstdc o library o ar rcs libra
  • 如何观察目录的变化? [复制]

    这个问题在这里已经有答案了 在 python 核心中找不到任何东西来执行此操作 谁能推荐一个库或 电池 来做到这一点 理想情况下 我希望它是可移植的 但如果它仅适用于 Unix 我的服务器 也没关系 在 Linux 上 您可能对 pyino
  • Reflection.Emit 与 CodeDOM

    使用 Reflection Emit 库与 CodeDOM 在运行时动态生成代码有哪些优缺点 我正在尝试根据运行时以 XML 形式提供的元数据在系统中生成一些 相对复杂的 动态类 我将生成扩展应用程序程序集中现有类的类 实现附加接口 添加方
  • 矢量绘图中的微光动画

    我一直在尝试使用动画矢量可绘制图标实现闪烁动画 我正在寻找的效果与此类似 我已经用过Facebook 微光库 https facebook github io shimmer android 为了获得这种效果 尽管这正是我所需要的 但我想使
  • Typescript Array[T] 接受 {..T} 作为有效类型

    使用时这咬了我useState
  • 检索 Sitecore 项目在内容树中的位置 A 以及位置 B 中的用户

    给定以下内容树 我如何将经销商与汽车关联起来 以便获得这样的 URL http website Dealerships JimWhite 福特 http website Dealerships JimWhite Ford 我需要能够在汽车下
  • 有没有办法在 Kotlin 中使用初始化函数构造 HashSet?

    从文件中读取星星2016 年 Facebook 黑客杯 https www facebook com hackercup problem 910374079035613 Boomerang Constellations问题 可以定义以下扩展
  • 如何调用同步谷歌日历

    首先阅读以下问题 从 Android 上的日历提供程序中删除事件 https stackoverflow com questions 18774394 delete events from calendar provider on andr
  • Eclipse 无法识别字符串和类

    我保存了一个由 eclipse 构建的项目 然后我的电脑就死机了 当我修复它并重新格式化时 我重新下载了 eclipse 等 实际上 当我按下 eclipse exe 时 它会显示 eclipse juno 图标 但窗口的名称是 Java
  • C++“内存屏障”示例[重复]

    这个问题在这里已经有答案了 我正在阅读有关 volatile 关键字的问题的答案 https stackoverflow com a 2485177 997112 https stackoverflow com a 2485177 9971
  • C# 中任意等级数组的索引

    我需要迭代任意排名的数组 这是为了阅读和写作 所以GetEnumerator不管用 Array SetValue object int 不适用于多维数组 Array SetValue object params int 需要过多的算术来迭代
  • 在 git bash 中创建一个新文件

    我已经运行了 Windows 版 Git 但我不确定它是否应该充当文本编辑器 我想我是用 Vim 编辑器安装的 但是在 Git Bash shell 中如何创建文件 例如网页 html git add webpage html 返回为 fa
  • Flutter:如何在手势检测器中禁用 onTap 一段时间?

    我有一个GestureDetector在自定义无状态视图中 什么时候onTap触发后 我显示了一个显示一些信息的小吃店 当用户快速多次单击时 它会永远显示小吃栏 源代码 https github com ammaratef45 zold f
  • Ivy,主配置是什么,为什么它不拉动jvyaml?

    我有以下常春藤文件