问题标签 [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 投票
2 回答
3337 浏览

gradle - 如何在 Gradle 中下载和引用单个工件?

我正在创建一个 Gradle 任务,我想在其中下载并引用 Maven 存储库中存在的工件的 jar 文件。具体来说,我计划通过 Gradle exec任务调用外部脚本,使用该 jar 的位置作为脚本的参数。使用 exec 任务很简单;我想弄清楚的是如何在文件系统上获取工件的 jar 文件的位置。

作为一个简单而具体的示例,假设我的 Gradle 项目目录中有以下文件:

构建.gradle:

my_script.sh:

如何获取工件 jar 的文件路径,并在必要时从远程存储库下载它?例如,如果它不在我的本地工件缓存中,或者它是更新的快照版本,则应该下载它。

0 投票
1 回答
483 浏览

gradle - gradle如何解决冲突的依赖版本

假设我有 3 个模块和 3 个不同的 build.gradle 属性文件。

模块 A v1 在 build.gradle 中有以下条目

模块 B v1 在 build.gradle 中有以下条目

Module C v1 在其 build.gradle 中有以下条目

所以我的问题是:运行时会解决什么 ATLAS 版本?

0 投票
0 回答
675 浏览

r - conda 创建 R 环境

如何使用 R 支持和 RStudio 重新创建 conda 环境?下面的代码对我不起作用:

0 投票
0 回答
73 浏览

maven - 在apache maven中,如何强制添加省略的依赖jar?

Maven有“越接近越好”的la脚依赖冲突解决规则:如果一个库存在2个版本,则只保留最接近传递依赖树主干的一个,其他版本将从类路径中删除。这在所有由 maven 构建的项目中造成了普遍的不稳定。

我想从两个方面解决这个问题:

  1. 使用 JHades 之类的冲突检测分析器扫描类路径中的所有内容,并从类加载器中报告版本冲突

  2. 使用花哨的类加载器根据情况自定义类路径,以便在正确的时刻使用正确的版本。这也是OSGi采用的方法

为了实现它们中的任何一个,我需要覆盖 maven,以便它将进一步版本的 jar 附加到各种生命周期中的类路径中(特别是“测试”)。我如何实现这一目标?

更新:我意识到 maven 是一个旧产品,并不是为具有数千个依赖项的大型项目设计的。因此,如果您在 Gradle、Pants、Buck、sbt 或任何深奥的构建工具中有解决方案,我仍然会接受它作为有效答案。

0 投票
0 回答
315 浏览

java - Gradle 解析策略 cacheDynamicVersionsFor 不起作用

我想每次都推动 Gradle 重新下载我的 SNAPSHOT 依赖项。可以通过--refresh-dependencies.
但我想以编程方式以另一种方式进行:

(我知道如果版本是SNAPSHOT,不需要添加changing = true,但添加它以防万一)

所以在那之后,当我运行我的应用程序时,./gradlew clean bootRun --info 我会看到下一个日志:

还有一个问题,它下载了 pom 文件,但不下载 jar。我应该在构建脚本中进行哪些更改以使其按预期工作?


只有当我指定--refresh-dependencies它会下载jar:

0 投票
1 回答
87 浏览

package-managers - 在 Nix 覆盖中禁止运行时依赖包

任务描述

我想确保我安装的任何派生都没有运行时依赖于指定的派生集。如果我要求nix-env安装具有这种运行时依赖性的软件包,我希望它说我要求不可能。构建依赖关系很好。不过,我想避免大规模的级联重建。

换句话说,我想确保派生name = evil永远不会到达我的 Nix 商店,但我很好,它被用来在 Hydra 上构建其他派生。这是我尝试过的:

尝试失败:使用派生meta属性

但这会nix-env拒绝安装在构建时依赖于 的程序evil,例如它拒绝安装gohaskell程序(静态链接),因为编译器对evil.

失败的尝试:evil用无害的东西代替

我写覆盖替换evil

它会导致重大的级联重建。

随机想法

如果有函数,像这样:

这对我来说是 90% 的解决方案。

0 投票
2 回答
3615 浏览

node.js - 纱线工作区——包别名

TL;DR 如何为本地纱线工作区依赖项创建别名?

我之前尝试过纱线工作区,但从未成功,我正在再试一次。

我已经入驻"workspaces": ["packages/*"]package.json

对于每个包,我决定使用命名约定@-/package-name来防止命名冲突,而不用担心内部包的命名空间。

在将包添加为依赖项时,我一直遵循一种使用接口名称进行解析的风格,但将其指向具体的实现。这是我在使用纱线工作区之前所做的:

这基本上是为了允许我喜欢称之为编译时静态依赖注入。这也意味着每个包都可以根据需要单独命名其接口依赖项,并防止命名冲突。

但是,我不知道如何使用纱线工作区来实现这一点。如何为@-/some-concrete-implementation名为的纱线工作区包创建别名my-interface-name

我已经尝试过但没有成功:

  • 像定义依赖一样"my-interface-name": "@-/some-concrete-implementation"}- 由于某种原因,这会导致纱线@-/some-concrete-implementation在 npm 注册表而不是本地工作区中查找
  • 我也尝试过使用工作区协议:"my-interface-name": "workspace:@-/some-concrete-implementation"}但它仍然在 npm 注册表中查找包!

我还没有尝试过并且可以工作但首先消除了使用纱线工作区的好处:

  • "dependencies": {"my-interface-name": "file:../../node_modules/@-/some-concrete-implementation"}"
0 投票
2 回答
1220 浏览

java - 如何修复依赖解析错误?

我正在 libgdx 中开发一个游戏,我正在使用一个外部 jar 来处理 JSON,我知道 libgdx 有它自己的,但我以前使用过这个 jar,我知道如何使用它。无论如何,我将它添加到我的根目录中的 build.gradle 并同步。但是现在当我尝试构建项目时,我收到了这个大错误消息:

我不知道这意味着什么,也不知道这个 org.hamcrest 是什么重复的。这是我的 build.gradle 文件:

我唯一添加的是“实现组:'com.googlecode.json-simple',名称:'json-simple',版本:'1.1.1'”到我的核心项目中的依赖项。知道如何解决此错误吗?或者甚至是什么原因造成的?

0 投票
0 回答
481 浏览

maven - spark解决企业神器背后的外部包

我想在公司 Artifactory 后面解决 spark 包:

根本无法为我解决。在日志中我发现:

没有输出。

JAR ( /usr/hdp/3.1.4.0-315/spark2/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml) 中的 ivy 设置是:

0 投票
0 回答
125 浏览

python - 如何生成python pip依赖范围?

我正在开发一个 python 库,我们目前正在使用pip-tools它来固定依赖项。

例如一个基本的requirements.in

在此文件上运行pip-compile将生成requirements.txt类似以下内容(此处已简化):

我的问题是不建议为将在 pypi 上公开的包固定版本,因为最终用户对其他库缺乏灵活性。在这些情况下指定依赖范围似乎是一种常见的做法,例如

我的问题是,是否有任何方法可以自动生成这些依赖范围requirements.in?我想这应该相对容易使用现有的依赖解析工具来生成与所有库兼容的最小和最大版本。(任何没有指定任何版本的库都可以保持原样。)

我还没有找到任何可以执行此类操作的工具。其他库的维护人员是否手动执行此任务?我理解我上面描述的方法仍然需要对requirements.in没有交叉依赖关系的库进行一些手动干预,但在大多数情况下(当然在我的情况下),这应该是繁重的工作。