gradle 传递依赖冲突
gradle transitive dependency conflict
我遇到了一个典型的传递依赖问题,但找不到解决方案。
我的项目使用 spark
和 hadoop-tools
依赖项。
spark
使用 hadoop-mapreduce-client-core
和
hadoop-tools
使用 hadoop-core
hadoop-core
和 hadoop-mapreduce-client-core
相互冲突。换句话说,hadoop-mapreduce-client-core
是 hadoop-core
(mapreduce1) 的更新版本 (mapreduce2)。
在这个项目中,我将有一些运行 spark
作业的可执行文件和一些运行 Distcp
的可执行文件(取决于 hadoop-tools
)。我如何在 build.gradle
中指定此 relationship/dependency/force,以便 spark
流和 hadoop-tools
流在运行时找到它们自己的依赖项。
如果您 类 在 2 个不同的 jar 中有相同的 FQCN,并且您想在不同的场景中继续使用它们(因为它们的 Artifact Id 不同),那么最好和干净的方法可以实现这一点是分解成一个单独的模块。
请参考Gradle多项目构建
https://docs.gradle.org/current/userguide/multi_project_builds.html
我遇到了一个典型的传递依赖问题,但找不到解决方案。
我的项目使用 spark
和 hadoop-tools
依赖项。
spark
使用 hadoop-mapreduce-client-core
和
hadoop-tools
使用 hadoop-core
hadoop-core
和 hadoop-mapreduce-client-core
相互冲突。换句话说,hadoop-mapreduce-client-core
是 hadoop-core
(mapreduce1) 的更新版本 (mapreduce2)。
在这个项目中,我将有一些运行 spark
作业的可执行文件和一些运行 Distcp
的可执行文件(取决于 hadoop-tools
)。我如何在 build.gradle
中指定此 relationship/dependency/force,以便 spark
流和 hadoop-tools
流在运行时找到它们自己的依赖项。
如果您 类 在 2 个不同的 jar 中有相同的 FQCN,并且您想在不同的场景中继续使用它们(因为它们的 Artifact Id 不同),那么最好和干净的方法可以实现这一点是分解成一个单独的模块。
请参考Gradle多项目构建
https://docs.gradle.org/current/userguide/multi_project_builds.html