当前位置: 首页 > 知识库问答 >
问题:

如何让maven解决本地依赖的可传递依赖

翟单弓
2023-03-14

我们有一个项目a依赖于项目B,项目B依赖于图书馆C。a和B是本地项目,而C是maven central repo的公共图书馆。

波姆。xml用于:

<name>ProjA/name>
...
<dependency>
  <groupId>com.abc</groupId>
  <artifactId>ProjB</artifactId>
  <version>1.0</version>
</dependency>

波姆。用于B的xml:

<name>ProjB/name>
...
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>C</artifactId>
    <version>2.23.2</version>
</dependency>

在A中运行mvn dependency:tree-Dverbose时,它不会解析B的依赖项,B中使用的此类依赖项也不会显示在A的Maven依赖项中。这对于编译很好,但在运行时会因为NoClassDefFound错误而失败。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjA 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ ProjA ---
[INFO] com.abc.projA:jar:1.0
[INFO] +- com.abc.projB:jar:1.0:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.326 s
[INFO] Finished at: 2016-09-15T16:29:49-07:00
[INFO] Final Memory: 13M/309M
[INFO] ------------------------------------------------------------------------

有没有办法让maven解决像B这样的本地依赖的可传递依赖?

共有1个答案

訾高飞
2023-03-14

我认为这里的问题是B在本地repo中不存在。m2

您需要为B运行mvn install,才能将包安装到中。m2,可由本地用户拾取。

然后在A中运行mvn依赖项:Tree-Danyose不会产生问题

 类似资料:
  • 主要内容:依赖传递,依赖范围,依赖范围对传递依赖的影响,依赖调节Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示,项目 A 依赖于项目 B,B 又依赖于项目 C,此时 B 是 A 的直接依赖,C 是 A 的间接依赖。 Maven 的依赖传递机制是指:不管 Maven 项目存在多少间接依赖,POM 中都只需要定义其直接依赖,不必定义任何间接依赖,Mav

  • 问题内容: 我有一个带有内部jar文件的项目内仓库的Maven项目。我使用install命令将jar文件安装到内部注入存储库中,当我在存储库中签入安装jar文件时,我还在pom文件中添加了依赖项配置。但是当我运行mvn编译文件时。我收到mvn无法解决依赖关系的错误 这是Pom片段: 这是POM中的依赖 这是错误消息: [INFO]最终内存:6M / 309M 是否有人对此错误有任何建议。 这是使用

  • 12月10日,在(CVE-2021-44228)中发现了一个严重的漏洞,我被要求检测我们项目(主要是maven项目)中的所有用法(直接和传递)。我发现很容易检测是否被列为直接依赖项。我可以通过或来检查它们。就像下面显示的树。我知道这也是Eclipse Steady和OWASP正在使用的方法。 我的公司:我的应用程序:v1。0 \-org。阿帕奇。登录中。log4j:log4japi:jar:2.1

  • 这个问题将澄清什么是传递依赖,以及它在Maven中如何在非常高的级别上工作。 我的定义是:在依赖树中,比如-- 若C在B中有范围编译,那个么将B声明为A的依赖项就足以用Maven构建A。但是,如果C在B中提供了作用域,那么当Maven构建A时,除非A在其依赖项中声明C,否则该构建不会根据C自动编译A。 这是正确的吗?

  • 几天来,当根依赖来自我的本地存储库时,我试图让apache常春藤解决我在ivy.xml中声明的依赖关系,但失败了。我的公共存储库(maven)中的根依赖关系工作得很好,甚至在我编辑ivy.xml指向本地存储库中模块的依赖关系时也能工作。但是本地存储库的传递依赖解决方案将不起作用。我检查了缓存中一个本地模块的解析ivy.xml,依赖部分已经被清除了!有什么我必须做的吗? 这是我的ivysetting