问题标签 [transitive-dependency]
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.
scala - 如何解决传递依赖版本冲突(scala/sbt)
我有一个包含几个实用程序类的项目。让我们命名它Utils
。我有一个proj1
取决于Utils
. 另一个proj2
取决于proj1
and Utils
。
问题是如果两者都proj1
依赖proj2
于不同的Utils
版本,这将导致问题。
最好的解决方案是什么?
这种情况发生在 Scala/SBT 项目中,但我猜其他语言也有同样的问题。
编辑:
需要明确的
proj2
是,将运行的项目将使用来自proj1
和的一些代码Utils
。
maven - 在非 Maven 项目中管理 Maven 的运行时和传递依赖项
我创建了一个 Maven 项目(可重用库),它有许多依赖项(编译时和运行时),这些依赖项也可传递地依赖于许多其他依赖项。在 maven 中,我可以在 pom.xml 中添加依赖项,它的传递依赖项将被自动处理。因此,我将毫无问题地运行。
现在,我有一个非 Maven(基于 Ant)的项目,上面创建的库(Maven Lib)将被使用。
- 在这种情况下,如何管理 RUN TIME & TRANSITIVE 依赖关系?
- 我们是否应该在构建非 Maven(基于 Ant)的项目时也包括运行时和传递依赖项?
hadoop - Gradle 用 logback 替换传递依赖 log4j
是否可以用 logback 从传递依赖替换 log4j?这是我的 gradle 依赖项(https://github.com/geoHeil/lab04/blob/master/build.gradle):
我的情况:
- 我是 Gradle 新手
- 从事 Hadoop 项目
- 想要使用当前的记录器,例如
logback
现在,即使应该替换 log4j,它似乎也不起作用。警告仍然存在:
java - Gradle传递依赖不起作用?
所以我在这里有一个项目,它有以下 build.gradle:
目前,遵循这些构建说明可以很好地编译应用程序。但是,对于com.dorkbox:SystemTray
库,我必须包含 SystemTray 的传递依赖项:net.java.dev.jna:jna
和org.slf4j:slf4j-simple
. 如果我理解正确,Gradle 默认会自动包含传递依赖项,但如果我删除该compile 'net.java.dev.jna:jna:4.2.1'
行,我的程序仍然可以编译但无法运行(因为 JNA 是运行时依赖项)。
我花了大约 3 个小时试图修复它,但我无法解决它。一位 SO 用户建议清除缓存,因为这为他解决了问题,但清除缓存并没有解决问题。我也了解了这个gradle dependencies
命令。这是输出:
如您所见,SystemTray 确实将 JNA 作为依赖项包含在内,但如果我在主项目中删除 JNA 依赖项,它将无法运行。
maven - Maven 传递依赖导致 NoClassDefFound 错误
我在尝试加载一个似乎是由于依赖版本冲突的类时收到NoClassDefFoundError 。
项目 A -> 项目 B -> 项目 C。
我们在项目 A 中包含了项目 C 的 2.0 版。
然而
项目 B 需要项目 C 的 1.0 版。
现在,当项目 B 代码尝试从项目 C 加载类时,它会获得 2.0 版。
有没有办法,如果项目 B 尝试这样做,我可以明确定义引用项目 C (版本 1.0 ),并且在所有其他情况下它应该选择版本 2.0
我的意思是我们可以排除传递依赖的方式,有没有办法明确定义包含(仅用于各个项目的引用,而不是整个应用程序代码)。
谢谢。
maven - Maven:在版本冲突的情况下配置传递依赖解析
我已经读过,如果这个其他版本在依赖树中“更近”,那么 Maven 依赖解析机制可以用某个较低版本(1.0.0)替换我指定的版本(例如 1.2.3)。我知道我可以通过用方括号指定版本号(如 [1.2.3])来排除这种行为。
我想知道我是否可以全局定义版本冲突的行为?我是否可以全局说版本冲突已解决为该版本冲突的最新版本总是导致错误消息?
java - AAR 传递依赖 Google 位置服务
我在 Android Studio 中实现了一个名为“proximity”的库项目并生成了一个“.aar”。这个 aar 我已经作为一个模块添加到一个新的测试项目中,如下所述:https ://stackoverflow.com/a/24894387/2791503 此外,我将该模块作为具有传递标志的依赖项包括在内,因为它已被提议这里:https : //stackoverflow.com/a/25730092/2791503 这可能是新TestProject的gradle文件:
仍然当我启动应用程序时,它告诉我它找不到 Google Location API 的类,这是我的库模块的依赖项。
java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/common/api/GoogleApiClient$Builder;
如何强制 gradle 包含我的库模块的那些传递依赖项?
编辑:这是原始库项目的 gradle 构建文件:
这就是将库作为引用 aar 的模块导入后 gradle 构建文件的外观:
maven - 排除依赖项的依赖项并重新声明它有什么意义?
我注意到项目的 poms 中有一些模式。有一个像这样的依赖关系图:你的项目 A -> 其他项目 B -> B 的依赖项目 C。项目 B 在 A 的 pom 中声明为依赖项,而 B 的依赖项 C 从 B 中排除并重新声明为直接依赖项项目 A. 如果 Maven 文档公开说它采用“最近”依赖项,那么这个排除的意义是什么,所以如果你直接声明它,那么 Maven 使用那个版本而不是任何传递的版本?