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

我的项目使用sparkhadoop-tools依赖项。spark使用hadoop-mapreduce-client-corehadoop-tools使用hadoop-corehadoop-corehadoop-mapreduce-client-core相互冲突。换句话说,hadoop-mapreduce-client-corehadoop-core(mapreduce1)的较新版本(mapreduce2)。

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

最佳答案

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

请引用Gradle Multi-Project版本

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

07-24 09:51
查看更多