问题标签 [dependency-resolution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3248 浏览

maven - 从 Maven 2.2.1 升级到 Maven 3.0.4 时出现 DependencyResolutionException

我正在尝试将我的项目从 Maven 2.2.1 升级到 Maven 3.0.4,但是遇到了依赖解析的问题。我花了一整天的时间试图通过查看 Maven 文档和类似的帖子来研究这个问题,但我仍然卡住了。这是我关于 stackoverflow 的第一个问题,所以希望我已经很好地遵循了这里的礼仪。谢谢你的帮助!

我的项目结构如下:

此外,我自己的存储库中有以下文件:

child-alpha/pom.xml 又对我自己的 acme:child-dep-jdk15 有一个配置文件依赖,它已单独构建到一个 jar 文件中,并且有自己的 .pom 文件指定一个父级是相同的 acme-parent父母作为孩子阿尔法。

以下是相关文件的摘录:

极致父 pom.xml:

子阿尔法 pom.xml:

儿童-dep-jdk15-1.0.pom:

当我尝试构建 child-alpha 时(在 child-alpha 目录中),我运行了以下命令:

我得到了以下日志消息和堆栈跟踪(删除了无关消息):

在使用 Maven 2 时,我从不需要位于以下位置的 acme-parent pom.xml:http: //maven2.my-own-repo.com/acme/acme-parent/1/acme-parent-1。绒球

我们在自己的仓库中没有父 pom.xml 的原因是我们在创建版本控制分支时使用了一个脚本,该脚本会根据我们所在的分支更改 acme-parent pom.xml 中的某些值,所以将 pom.xml 放在 repo 中并为我们尝试与我们的持续集成服务器同时构建的所有不同分支正确更新它会很复杂。

在 Maven 2 中,当构建 child-alpha 时,Maven 可以轻松找到 acme-parent pom.xml 一个目录,即相对路径为 ../pom.xml,因此它永远不会尝试访问我的存储库找到它。仅在我的本地结帐中拥有父 pom.xml 而在 repo 中没有它在 Maven 2 中运行良好。

但是,当我尝试在 Maven 3.0.4 下构建 child-alpha 时,出现了上述异常。起初,我以为我需要在 child-alpha 的 pom.xml 顶部的标签中显式设置 relativePath,但这并没有解决它——而且 acme-parent 的 pom.xml 确实已经在默认的 relativePath 中../pom.xml,因此无需显式设置。

然后,我尝试在 child-alpha 的 pom.xml 部分中注释掉 child-dep-jdk15 依赖项。child-alpha maven 构建成功完成,此依赖项已注释掉。

我不明白当 child-dep-jdk15 依赖项到位时,为什么 child-alpha 不会在 Maven 3 中构建。如果 Maven 最初能够正确找到 acme-parent pom.xml(根据顶部的块),为什么现在在处理 child-dep-jdk15 依赖项时尝试从 repos 下载它?我是否配置错误,如果是,我应该如何修复它?

另一件事:如果我首先mvn -N install在与 acme-parent 的 pom.xml 相同的目录中运行,然后尝试构建 child-alpha,那么 child-alpha 构建成功,即使在代码中保留依赖项 child-dep-jdk15 也是如此。运行该命令后,我可以验证 acme-parent-1.pom 是否在我的本地 .m2 目录中。虽然这种解决方法对于个人开发人员来说可能没问题,但对于我们的持续集成服务器来说却是一个问题,它需要能够为不同的分支运行并发构建。

由于我上面提到的版本控制分支更改,我强烈希望不必重新配置我的存储库来托管 acme-parent pom.xml。

0 投票
17 回答
206269 浏览

maven - Maven 找不到本地工件

maven 偶尔会抱怨在本地构建和打包的特定依赖项在构建另一个将其作为依赖项的项目时无法在本地存储库中找到。我们收到如下错误:

未能在项目 X 上执行目标:无法解析项目 X 的​​依赖关系:在 [archiva 存储库] 中找不到 Y 已缓存在本地存储库中,直到内部的更新间隔已过或强制更新时才会重新尝试解决 - >

其中 X 是正在构建的项目,而 Y 是据称丢失的工件。如果您查看本地存储库,则工件就在那里。该工件从未安装在我们的档案存储库中,因此问题纯粹基于本地存储库。

我们尝试了 settings.xml 中的各种配置文件,当然还有“mvn -U”。既没有任何好处,也不应该这样做,因为这个工件永远不会比本地存储库更进一步。

似乎唯一有效的两件事是等待很长时间直到 maven 变聪明,或者完全删除本地存储库。推测等待选项与上述更新间隔有关。

我们在 maven 3.0.2 和 3.0.3 中遇到过这个问题。我们使用的是 Archiva 1.0.3(但这也不应该是一个因素)。任何帮助将不胜感激。

0 投票
5 回答
46526 浏览

maven - Maven 找不到依赖项 [dependencyResolutionException]

我在我的项目中添加了一个 Maven 依赖项,我的项目在本地编译,而它不在服务器上编译。它无法解决新添加的依赖项。

这是我的 pom.xml 文件:

这是我的控制台输出错误:

(我隐藏了所有真实的 URL 和包。)

可能是什么问题呢?

0 投票
1 回答
4300 浏览

gradle - Gradle 如何在我的 buildscript 块中为 SNAPSHOT 版本指定 cacheResolutionStrategy?

我遇到了 resolutionStrategy.cacheChangingModulesFor 的问题。

我的项目 build.gradle 看起来与此类似

我的问题是:如何在我的 buildscript 块中为 SNAPSHOT 版本指定 cacheResolutionStrategy?

0 投票
2 回答
307 浏览

grails-3.0 - 在 Grails 3 中使用 POJO 域 jar

我正在尝试将 Grails 2.x 项目移植到 Grails 3。基于 2.x 的项目的域由 JAR 中的 POJO 组成,但现在 v3 不再有 /lib 目录,并且文档建议如下:

4.7 依赖解析

依赖解析由 Gradle 构建工具处理,所有依赖都在 b​​uild.gradle 文件中定义。有关更多信息,请参阅 Gradle 用户指南。

(文档链接)

...任何人都可以提供如何处理添加 jar 依赖项的简短版本(我对 Gradle 的熟悉度为 0)

当我尝试运行'run-app'命令时,它会收到此错误(因此至少正在读取休眠配置文件):

创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Unable to load class [com.flightloglib.domain.AircraftMakeAndModel] 在 Hibernate 配置条目中声明

0 投票
1 回答
416 浏览

java - Gradle中具有相同包结构的类的依赖关系解析

假设我有ProjectA一个编译依赖于core. 并且core取决于deepcore. 因此,ProjectA 对 deepcore 具有传递依赖。

所以,构建脚本ProjectA有这个

并且构建脚本core有这个

现在,CoreService两者都定义了一个类,core并且deepcore具有相同的包结构。我正在使用我的那个类ProjectA,它将使用哪个实现?如何配置我的依赖项以便我使用来自的版本core

0 投票
1 回答
4698 浏览

java - spring-framework-bom:jar:4.0.1.RELEASE 的 netbeans maven Web 应用程序中的依赖关系解析异常

我从 Netbeans IDE 创建了一个 Maven Web 应用程序,然后从项目属性中添加了 spring 框架。

然后我建立了这个项目。我收到以下错误。

我在构建时得到的输出:

我的 pom.xml 文件:

0 投票
2 回答
1325 浏览

asp.net-mvc - 根据运行时会话值从 Autofac 解析服务实现

需要一些帮助来尝试解决基于参数在运行时解决服务实现的问题。换句话说,使用带有 DI 的工厂模式。

我们将 Autofac 连接到我们的 MVC 应用程序。我试图弄清楚我们如何使用用户会话变量(称为排序类型)用于依赖解析器来解决服务的正确实现。

我们正在尝试做的一个例子。

该应用程序有两种“类型”的订购 - 真正的电子商务订购类型(将商品添加到购物车、结帐等)。

另一种称为预测排序。用户创建订单 - 但他们不会立即得到履行。他们经过批准程序,然后完成。

底线是应用程序根据订单类型进行更改的数据模式和后端系统。

我想做的是:

  1. 我有 IOrderManagerService

    /li>
  2. 因为我们有两种排序“类型”——我有两个 IOrderManagerService 的实现:

    /li>

  1. 我的第一个问题是 - 在我的 MVC 应用程序中 - 我是否将这些实现注册为?

    /li>
  2. 我们计划做的是在用户会话中坚持用户选择的订购类型。当用户想要查看订单状态时——取决于他们选择的订购“类型”——我需要解析器为控制器提供正确的实现。

    /li>

我已经准备好委托工厂这个答案很好地解释了这个概念。

问题是运行时参数被用于构建服务并在运行时解析。IE

所有这一切都会给我提供在构造函数中使用“运行时参数”的“服务”。

我也看过键控或命名分辨率。

起初我以为我可以将这两种技术结合起来——但控制器依赖于接口——而不是具体的实现。(正如它应该)

任何关于如何解决这个问题的想法都将不胜感激。

0 投票
2 回答
4153 浏览

maven - 为什么 gradle 不在其他 maven repos 中搜索依赖项?

为什么gradle不在所有定义的maven repos中搜索依赖?

回购块定义:

(假设我在子项目中的某个地方net.sf.json-lib:json-lib:2.2.1)我收到:

为什么只有一个搜索位置?显然json-lib存在于.mavenCentral()

有什么方法可以分析它,或者以某种方式调试?

PS如果我mavenCentral()在repos列表中上移一个位置,我可以解决这个问题,但这会以同样的原因破坏另一个子项目的依赖解析——来自“spring”repo的东西在mavenCentral().

0 投票
1 回答
2313 浏览

eclipse - Eclipse - 找不到父 pom,但 Maven 构建实际上可以从 Eclipse 本身工作

Eclipse 一直告诉我它找不到我的项目的父 pom,但是如果我mvn -U install在我的项目上运行,从 Eclipse,构建工作。

我正在使用 Eclipse Neon.1 Release (4.6.1),并将其配置为使用我的外部 maven,即 maven 3.3.9。

这是 Eclipse 显示给我的确切标记:

这是我的 pom 中的父标签: