Ivy 无法解析依赖关系的范围,该依赖关系是传递依赖关系的依赖关系

2023-12-10

我向 ivy.xml 添加一个依赖项(让我们将其命名为 A),该文件在 Maven 中心有一个 pom 文件。 Ivy 使用 ibiblio 来解决 Maven 依赖关系。添加到ivy.xml 的依赖项(A) 具有传递依赖项(B)。到目前为止一切顺利。传递依赖(B)的依赖(C)无法通过ivy解决。

我在ivy.xml中定义了A,如下所示:

<dependency org="Z" name="A" rev="0.6-SNAPSHOT" conf="*->default"/>

在 B 的 pom 文件中,C 在编译和测试范围中都定义如下:

<dependency>
      <groupId>X</groupId>
      <artifactId>C</artifactId>
    </dependency>
    <dependency>
      <groupId>X</groupId>
      <artifactId>C</artifactId>
      <type>test-jar</type>
      <scope>test</scope>
</dependency>

当我在ivy的缓存文件(~/.ivy2/cache/X/C/ivy-0.98.8-hadoop2.xml)中查看由ivy解析的B的xml文件时,它看起来像这样:

<dependency org="X" name="C" rev="0.98.8-hadoop2" force="true" conf="test->runtime(*),master(*)"/>
<dependency org="X" name="C" rev="0.98.8-hadoop2" force="true" conf="test->runtime(*),master(*)">
  <artifact name="C" type="test-jar" ext="jar" conf="" m:classifier="tests"/>
</dependency>

因此,ivy 无法正确定义 C 作用域。根据记录,我无权修改 pom 文件,因为它们是第三方项目。我该如何解决它?


我回顾了常春藤的用法纳奇项目抱歉,但我的结论是它过于复杂,原因如下:

  • “编译”和“测试”目标对解析任务发出单独的调用
  • 每个插件也调用一个ivy解析任务
  • 维护类路径的复杂逻辑。可以使用简化缓存路径任务和常春藤配置。
  • 构建插件不由 ivy 管理(Sonar、Eclipse、Rat)

我开始重构构建,但当我意识到我不理解主要的 nutch 工件和插件之间的关系时,不得不停止......(我发现NUTCH-1515艰难的方式...浪费大量时间 feed 插件缺少依赖项)。

我也注意到了问题NUTCH-1371呼吁拆除常春藤。如果不对当前代码库进行重大更改,这将是一次棘手的重构。我怀疑它必须是一个多模块构建,每个插件都列出自己的依赖项。

总之,这项工作并没有回答你的问题,但我认为我至少需要记录几个小时分析的结果:-) 鉴于NUTCH-1371不知道你的项目是否能够容忍重大的ivy重构?

重构常春藤

以下是我到目前为止所取得的成就:

  • nutch项目的私人“开发”分叉
  • 带后备箱差速器

好处:

  • 显示所有配置的单个常春藤报告(新ivy-解决目标)
  • 安装ivy的新机制(Newivy安装目标)
  • 类路径使用 ivy 配置进行管理(请参阅 ivy 的使用缓存路径任务和ivy 文件中的配置)
  • 使用ivy自动安装Eclipse、声纳和rat ANT任务(Eclipse插件值得注意,因为它使用打包解析器下载并从 tar 存档中提取 jar)。

影响以下 Nutch 问题

  • NUTCH-1881:这种新方法删除了resolve-test和resolve-default目标,并使用ivy而不是${build.lib.dir}来管理类路径
  • NUTCH-1805:可以轻松地为作业目标设置单独的配置及其自己的依赖项。
  • NUTCH-1755:我认为这个问题可以通过为 build.xml 指定一个名称来解决(请参阅:diff)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ivy 无法解析依赖关系的范围,该依赖关系是传递依赖关系的依赖关系 的相关文章

  • 清理码头 - 删除“不必要”的东西

    我习惯用Jetty http jetty codehaus org jetty 作为我的网络容器 我对我做了什么安装步骤得到原始的焦油球并且清理一些目录和文件从中 我在这里想提出的是 您通常从 Jetty 中删除什么以在生产 登台环境中使用
  • 使用 GWT CellTableBuilder 构建树表

    Is it possible to build a tree table like this http www sencha com examples ExamplePlace basictreegrid with the new Cell
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false

随机推荐