SBT子项目访问根项目数据(依赖版本)

时间:2017-03-24 19:59:20

标签: scala sbt

我有一个多个project,我正在我的一个子项目中用它的git版本创建一个类。

def iUberdataCoreVersion(version: Option[String] = Some("Not a Git Repository"), dir: File) = {
  val file = dir / "UberdataCoreVersion.scala"
  IO.write(
    file,
    s"""package eleflow.uberdata.core\n  object UberdataCoreVersion{\n          val version = "${version.get}"\n
       val sparkVersion = ${allDependencies.value.filter(_.extraString.startsWith("spark")).head.crossVersion}
             |}\n""".stripMargin)
  Seq(file)
}

依赖项在根项目build.sbt文件中定义。我想将spark版本(我的一个依赖项)添加到此文件中。有没有办法将参数传递给子项目构建,或者遍历依赖项以发现我使用的是哪个版本的spark?

根据评论中的要求进行更新

这里的问题是,在spark中有两个版本,在版本2中,我可以用与spark 1中不同的方式创建它的上下文(访问spark集群)。

root
 build.sbt

lazy val subProject = project settings (libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-repl" % sparkVersion)

我有3个子项目,它们之间共享spark版本,这就是我用这种方式配置它的原因,否则我可以将依赖项插入到子项目构建文件中。

考虑sparkVersion是作为构建参数提供的。

root
  sub
    build.sbt

在子项目中,我想创建一个包含spark版本的文件。这可以在属性文件或src代码文件中完成,就像我已经使用git代码一样。在创建子项目构建时,我可以接收它作为val的值吗?

我可以通过它的上下文访问spark版本,它有一个属性,但在这种特定情况下我想在创建上下文之前这样做,这就是我的问题。

1 个答案:

答案 0 :(得分:1)

我们在np.mean(arr)中定义属性并在所有子项目中使用它们。在这种情况下,它是Scala版本 - 但它可以是任何字符串。

build.properties