2016-03-23 5 views
0

Я пробовал много решений, которые я мог найти по этой теме. Прежде всего из них,SBT Сборка не работает (недействительная команда)

sbt assembly command not found

выглядел наиболее родственный, но не решить ее.

Я использую SBT 13,7

build.sbt:

lazy val commonSettings = Seq(
    organization := "com.example", 
    version := "0.1.0" 
) 

lazy val app = (project in file(".")). 
    settings(commonSettings: _*). 
    settings(
    name := "fat-jar-test" 
) 

assembly.sbt:

resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) 

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

структура проекта

root 
    | 
    src 
    target 
    project 
    | 
    build.sbt 
    assembly.sbt 

В SBT компилировать успешно, Я могу упаковать succesf ully, но когда я запускаю команду сборки я получаю:

[error] Not a valid command: assembly 
[error] Not a valid project ID: assembly 
[error] Expected ':' (if selecting a configuration) 
[error] Not a valid key: assembly 
[error] assembly 
[error] 

Я использую IntelliJ, но работает SBT от терминала.
Я нахожусь на Mac OSX.
Я изначально загружал sbt и устанавливал со своего сайта обычную установку. Я удалил и попытался установить из macports, никакой разницы.
У меня была версия scala в настройке build.sbt, но она была удалена, потому что я получал ошибки и читал, что 2.11.x не работает с sbt. Это остановило ошибки, но у меня все еще есть проблема сборки.

EDIT:

Я не был уверен, размещения build.sbt в этой структуре. Раньше я был в корневом каталоге. Предлагая римский ниже, я переместил его туда, но, увы, я получаю ту же ошибку.

+0

Что показывает команда 'plugins'? – Roman

+0

sbt.plugins.IvyPlugin: включен в приложении sbt.plugins.JvmPlugin: включен в приложении sbt.plugins.CorePlugin: включен в приложении sbt.plugins.JUnitXmlReportPlugin: включен в приложении – lbollar

ответ

3

Вытяните 1 уровень вверх по вашему build.sbt. Он должен находиться в корне проекта, а не в нем project.

Также возможно иметь build.sbt в папке project, это означает, что это отличная вещь. Прочтите Organizing Build документ для некоторого понимания.

UPD: как предположил @marios, можете ли вы также поместить resolvers в свой build.sbt. Также важно установить версию SNAPSHOT для вашей сборки. Все содержание Вашего build.sbt должно быть следующее:

scalaVersion in ThisBuild := "2.11.7" 

lazy val commonSettings = Seq(
    organization := "com.example", 
    version := "0.1.0-SNAPSHOT" 
) 

lazy val app = (project in file(".")). 
    settings(commonSettings: _*). 
    settings(
    name := "fat-jar-test" 
). 
    enablePlugins(AssemblyPlugin) 

resolvers in Global ++= Seq(
    "Sbt plugins"     at "https://dl.bintray.com/sbt/sbt-plugin-releases", 
    "Maven Central Server"   at "http://repo1.maven.org/maven2", 
    "TypeSafe Repository Releases" at "http://repo.typesafe.com/typesafe/releases/", 
    "TypeSafe Repository Snapshots" at "http://repo.typesafe.com/typesafe/snapshots/" 
) 

Затем добавить еще два файла root/project папку:

root/project/build.properties содержит одну строку:

sbt.version=0.13.7 

root/project/plugins.sbt также содержит один line:

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

Теперь удалите свой файл root/project/assembly.sbt (хотя это нормально, если вместо plugins.sbt, но давайте просто попробуем - эта конфигурация всегда работает для меня).

Теперь макет проекта должен быть следующим:

root 
    | 
    build.sbt 
    src 
    project 
    | 
    plugins.sbt 
    build.properties 

Перезагрузить SBT и попробовать plugins команду. Вы должны увидеть там sbtassembly.AssemblyPlugin.

+0

я попробовал это, и просто изменил его назад к этому. Точная ошибка. Я отредактирую вопрос, чтобы отразить это. – lbollar

+0

Этот ответ очень близок к правилу, поэтому я не хочу добавлять новый адрес. Файлы build.sbt должны находиться внутри корневого каталога. Также операторы resolvers должны быть внутри вашего build.sbt, а не внутри файла sbt плагина. – marios

+0

@marios Я тоже пробовал это, и по вашему предложению я вернул его в build.sbt. До сих пор никакая возможная комбинация не работала, и я получаю такую ​​же ошибку. Роман запросил вывод плагинов в комментариях по основному вопросу. Из этого похоже, что плагин не указан. – lbollar

Смежные вопросы