Подтвердить что ты не робот

Получение работы sbt-assembly

Итак, до сих пор я составлял проект Scala с SBT (через стек SafeSE). Я хочу запустить код через несколько машин, используя sbt-assembly. Следуя указаниям, единственное изменение, которое я сделал, было в моем файле project/Build.scala. Вот связанная с этим часть:

resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases",
resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases",
libraryDependencies += "com.eed3si9n" % "sbt-assembly" % "0.8.3"

Когда я запускаю sbt compile, однако, я получаю эту ошибку:

sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly/scala_2.9.1/sbt_0.11.2;0.8.3: not found.

Что я делаю неправильно?

Спасибо!

ИЗМЕНИТЬ Создал файл build.sbt в той же папке, что и Build.scala (папка /project/), и в ней есть две строки:

Seq[Setting[_]](resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases",
                addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3"))

Теперь ошибка:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.eed3si9n#sbt-assembly;0.8.3: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      com.eed3si9n:sbt-assembly:0.8.3 (sbtVersion=0.11.2, scalaVersion=2.9.1)
[warn] 
[error] {file:/Users/myname/current/projectname/project/}default-d7da9a/*:update: sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.8.3: not found

ИЗМЕНИТЬ 2 Hm, после успешного выполнения sbt compile, я должен просто войти в консоль sbt и ввести assembly?

> assembly
[error] Not a valid command: assembly
[error] Not a valid project ID: assembly
[error] Not a valid configuration: assembly
[error] Not a valid key: assembly
[error] assembly
[error]   

EDIT 3 JK получил его. Пришлось добавить информацию build.sbt, как указано в GitHub README.

4b9b3361

Ответ 1

Здесь есть два момента. Один из них заключается в том, что плагины SBT - это не только зависимости библиотек - в частности, они используют текущую версию SBT аналогично тому, как другие библиотеки Scala используют версию Scala. Другим является то, что libraryDependencies в project/Build.scala влияет на зависимости для проекта, а не на сборку.

Полная сборка SBT сама по себе является проектом SBT, расположенным только на одном уровне по дереву каталогов и поэтому может иметь собственную конфигурацию так же, как и обычная сборка. В отличие от обычной сборки, где требуется "полная сборка", необходимо в нескольких обстоятельствах, почти никогда нет причины использовать полную сборку для сборки, поэтому использование файлов .sbt, расположенных в project/, почти всегда достаточно.

Другая проблема - это управление версиями. SBT имеет функцию утилиты addSbtPlugin, которая обрабатывает все для вас. Он принимает идентификатор модуля и добавляет все необходимые сведения о версиях SBT и Scala.

Итак, чтобы получить sbt-assembly, работающий в полной сборке, вы создаете файл .sbt в project/ (обычно либо project/build.sbt или project/plugins.sbt) и размещаете там свои конструкторы и зависимости:

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

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