如何使用sbt-assembly插件设置build.sbt?

时间:2019-02-21 13:02:30

标签: java scala sbt

发布此帖子仅是因为没有其他建议的解决方案有帮助。 我有一个非常简单的一类Scala sbt项目,该项目需要是可运行的.jar文件。它具有一些Java依赖项,因此sbt package对我不起作用,我需要一个胖子。该项目具有以下结构。

├── build.sbt
├── project
│   ├── assembly.sbt
│   ├── build.properties
│   ├── project
│   └── target
├── README.md
├── src
│   ├── main
│   └── test
├── target
│   ├── scala-2.12
│   ├── specs2-reports
│   ├── streams
│   └── test-reports

它具有一个主要类别和一个测试规范。为了使sbt生成一个胖子,我在assembly.sbt目录中添加了project并相应地修改了build.sbt

import AssemblyKeys._

name := "myproj"

version := "1.0"

scalaVersion := "2.12.8"

libraryDependencies ++= Seq(
  "au.com.bytecode" %% "opencsv" % "2.4",
  "org.specs2" %% "specs2-core" % "4.3.0" % "test"
)

scalacOptions in Test ++= Seq("-Yrangepos")

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

但是,import AssemblyKeys._cannot resolve symbol是红色的吗?从控制台尝试可以给我

import AssemblyKeys._
       ^
[error] Type error in expression
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? 

我还忘记了什么,因为assebly github页面没有声明我们需要做其他事情。我的sbt版本是sbt 1:1.2.8-1

1 个答案:

答案 0 :(得分:3)

在您的project目录下,您需要添加一个包含以下内容的plugins.sbt文件:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")

然后,删除AssemblyKeys._并刷新sbt。只有成功刷新后,您才能插入该导入