Gradle传递依赖冲突

时间:2018-10-04 17:30:11

标签: hadoop gradle transitive-dependency

我有一个典型的传递依赖问题,找不到解决方案。

我的项目使用sparkhadoop-tools依赖性。 spark使用hadoop-mapreduce-client-corehadoop-tools使用hadoop-core

hadoop-corehadoop-mapreduce-client-core相互冲突。换句话说,hadoop-mapreduce-client-corehadoop-core(mapreduce1)的较新版本(mapreduce2)。

在此项目中,我将有一些可执行文件,它们运行spark作业,另一些可执行文件Distcp(取决于hadoop-tools)。如何在build.gradle中指定这种关系/依赖性/强制,以便spark流和hadoop-tools流在运行时都能找到自己的依赖性。

1 个答案:

答案 0 :(得分:1)

如果您在2个不同的jar中有具有相同FQCN的类,并且希望在不同的场景中继续使用它们(因为它们的工件ID有所不同),那么最好的,干净的方法是将其分解为一个单独的模块。

请参阅Gradle Multi-Project版本

https://docs.gradle.org/current/userguide/multi_project_builds.html