我有一个多个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版本,它有一个属性,但在这种特定情况下我想在创建上下文之前这样做,这就是我的问题。
答案 0 :(得分:1)
我们在np.mean(arr)
中定义属性并在所有子项目中使用它们。在这种情况下,它是Scala版本 - 但它可以是任何字符串。
build.properties