【发布时间】:2014-02-04 01:21:48
【问题描述】:
我正在使用 SBT 构建一个 Spark 项目。
当我包含一个 libraryDependencies 时,程序的一部分将工作,另一部分将抛出异常(因为在 libraryDependencies 中指定了错误的版本)。当我删除 libraryDependencies 时,情况正好相反。
有没有办法在编译或运行时动态更改libraryDependencies(更改版本)?
类似(伪代码):
libraryDependencies.set("org.apache.hadoop.hadoop-client", "2.0.0-cdh4.5.0")
// here comes the code depending on hadoop-client" % "2.0.0-cdh4.5.0
libraryDependencies.set("org.apache.hadoop.hadoop-client", "1.0.4")
// here comes the code depending on hadoop-client" % "1.0.4
这可以由scoping完成吗?
【问题讨论】:
-
你怎么能期望在编译和运行时有不同版本的库?!您可能根据其他设置有不同的设置,但是您所追求的对我来说没有意义。需要更多帮助来理解问题。您想在不同的代码块中添加什么?我认为您需要不同的模块,有效地创建a multi-project build。
-
感谢您的评论@JacekLaskowski 也许我应该更好地表达它,我想在程序的不同部分依赖不同的库。 (这里:我想使用一个版本的库从 HDFS 读取,然后使用该库的另一个(mapreduce)版本将此文件写入 Cassandra。多项目构建是否可能?
-
您应该将评论添加到问题中,因为它更容易理解。您绝对应该使用多项目构建,其中有两个模块 - HDFS 阅读器和 Cassandra 编写器。正如您所指出的,它们是分开的(不仅仅是因为它们使用的库)。
-
@JacekLaskowski 好的,我明白了,我创建了一个测试项目,但是我找不到任何关于如何在主文件中调用这两个模块的好的文档。所以我又提出了一个问题,你能看看吗? stackoverflow.com/questions/21183074/…
标签: sbt apache-spark