SBT没有为依赖项生成字节码类文件

问题描述 投票:1回答:1

我有下一个build.sbt文件:

name := "olbico-spark-solution"

version := "0.2"
scalaVersion := "2.11.8"

resolvers += "Typesafe ivy repository" at "https://repo.typesafe.com/typesafe/ivy-releases/"
resolvers += "Typesafe maven repository" at "https://repo.typesafe.com/typesafe/maven-releases/"

mainClass in (Compile, run) := Some("com.olbico.spark.MergeManager")
mainClass in (Compile, packageBin) := Some("com.olbico.spark.MergeManager")

mappings in (Compile, packageBin) += {
  (baseDirectory.value / "src/main/config/current.conf") -> "config/current.conf"
}

libraryDependencies ++= {
  val sparkVer = "2.2.0"
  Seq(
    "org.apache.spark" %% "spark-core" % sparkVer % "provided" withSources(),
    "org.apache.spark" %% "spark-sql" % sparkVer % "provided" withSources(),
    "com.typesafe" % "config" % "1.3.1" withSources()
  )
}

我想要实现的是向com.typesafe.config添加依赖项。使用当前的sbt配置,我希望最终的字节码具有以下结构:

~/test-spark-solution/target/scala-2.11/classes

 -com
     -olbico
          -spark
                JobManager$class.class
                JobManager.class
                ... more classes
     -typesafe
              -config
                    Optional.class
                    DefaultConfigLoadingStrategy.class
                    ... more classes

或者至少将config-1.3.1.jar添加到最终的包jar中。我接受了这两种解决方案,尽管现在还没有完成。在〜/ olbico-spark-solution / target / scala-2.11 / classes下我有以下结构:

 -com
     -olbico
          -spark
                JobManager$class.class
                JobManager.class
                ... more classes

包装后,包装罐中也没有包含config-1.3.1.jar。使用SBT向项目添加单个依赖项的最佳方法是什么?

scala apache-spark intellij-idea sbt
1个回答
3
投票

Java / Scala世界中的普通包装并不是要创建可部署的可执行文件,而只是创建模块的存档:您需要使用SBT Assembly或SBT包来获得完全可部署的jar。

© www.soinside.com 2019 - 2024. All rights reserved.