установка sbt-сборки с sbt 0.11.2

Я пытаюсь установить sbt-assembly, следуя инструкциям, чтобы создать автономный jar который может работать на компьютере без установленной scala.

Пока это шаги, которые я предпринял.

Я создал файл plugins.sbt:

$ cat sbt/project/plugins.sbt 
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2")

И я добавил следующее в начало моего файла build.sbt:

$ head -n3 sbt/build.sbt 
import AssemblyKeys._ // put this at the top of the file

seq(assemblySettings: _*)

Но когда я запускаю sbt, я получаю следующую ошибку:

sbt/build.sbt:1: error: not found: value AssemblyKeys
import AssemblyKeys._ 

person dsg    schedule 12.12.2011    source источник
comment
Вы получаете сообщение об ошибке, что плагин не может быть загружен?   -  person Christian    schedule 12.12.2011
comment
@Christian -- Нет, на самом деле я не получаю такого сообщения. Я считаю, что плагин загружается.   -  person dsg    schedule 12.12.2011
comment
Это работает здесь, точно с утверждениями, которые вы указали выше (у меня есть плагин, все еще в project/plugins/build.sbt, который сейчас устарел, но я сомневаюсь, что это имеет значение). Что произойдет, если вы сделаете sbt reload clean update, он загрузит плагин?   -  person 0__    schedule 12.12.2011


Ответы (3)


  1. Убедитесь, что вы используете версию sbt не ниже 0.11, набрав

    $ sbt sbt-version

    в командной строке bash.

  2. Убедитесь, что у вас настроен файл плагинов следующим образом:

    $ cat sbt/project/plugins.sbt
    
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2")
    
  3. Сделайте так, чтобы ваш файл сборки (build.sbt) выглядел так:

    import AssemblyKeys._ 
    
    seq(assemblySettings: _*)
    
    name := "my_project"
    
    version := "1.0"
    
    scalaVersion := "2.9.1"
    
    libraryDependencies ++= Seq(
      "org.scalatest" %% "scalatest" % "1.6.1" % "test",
      "commons-lang" % "commons-lang" % "2.6"
    )
    
    traceLevel in run := 0
    
    fork in run := true
    
    scalacOptions ++= Seq("-optimize")
    
    // The following is the class that will run when the jar is compiled!
    
    mainClass in assembly := Some("MyMain")
    
person dsg    schedule 16.02.2012
comment
Извините за вопрос новичка, что, если мой проект не использует build.sbt, а использует специальный класс, производный от Build (я полагаю, что это sbt.Build). Я хочу преобразовать его в толстую банку, и мне нужно добавить следующие параметры, которые я вижу в примере проекта — seq(webSettings:_*) и AssemblySettings. Проект здесь - github.com/zcox/lift-jetty-fatjar - person kirhgoff; 01.07.2013

Убедитесь, что у вас нет папки проекта/плагинов. Это может помешать работе других механизмов указания плагинов.

person jrudolph    schedule 13.12.2011

Не следует импортировать настройки плагина в build.sbt (базовая конфигурация): 1) build.sbt не является обычным исходным файлом Scala 2) настройки плагина предварительно импортированы.

Так что вы просто должны сделать

seq(assemblySettings: _*)

Импорт требуется только при использовании полной/расширенной конфигурации сборки.

person Vasil Remeniuk    schedule 13.12.2011