2015-11-24 5 views
1

Я хотел бы знать, как преобразовать обычный проект scala в проект sbt. Я попытался вручную создать файл sbt в корневом каталоге, правильно реализован, но Intellij все еще не распознает это как проект sbt, то есть он не покажет мне в «View -> Tool Windows» «SBT ".Настройка проекта модуля в Scala как проект sbt?

Как мне это сделать? На самом деле я пытаюсь создать пустой проект с несколькими (независимыми) модулями.

Из того, что я собрал, похоже, нет возможности добавить модуль непосредственно с поддержкой sbt, правильно?

Спасибо

+0

Вы хотите иметь проект Scala, который имеет SBT-модули или проект SBT с несколькими модулями? –

+0

Grrr, хороший вопрос. Я понятия не имею, я все еще младенец в этом отношении. Вероятно, я склоняюсь к прежней, а не к последней, потому что я бы хотел физически разделить различные части проекта, чтобы избежать сцепления. Или я могу сделать это в обоих направлениях? Будет ли один проект SBT с несколькими модулями позволять мне просто проверять из репозитория один модуль и строить его? –

+0

Да. Лучше, если у вас есть несколько подпроектов (a.k.a. многопроектный SBT). Каждый проект будет иметь свой собственный каталог, параметры, настройки и т. Д., И они могут быть скомпилированы, упакованы, протестированы независимо. Проекты могут иметь зависимости от внешних библиотек и зависимостей от других подпроектов. – marios

ответ

1

Вот пример многопроектной сборки. Корневой проект «агрегирует» все их, если вы хотите скомпилировать их все вместе или объединить их вместе и т. Д. Проект «coreLibrary» зависит от кода «coreA» и «coreB».

import sbt.Keys._ 
import sbt._ 

name := "MultiProject" 

lazy val root = project.in(file(".")).aggregate(coreA, coreB, coreLibrary) 

lazy val coreA = Project("CoreA", file("core-a")).settings(
    organization := "org.me", 
    version := "0.1-SNAPSHOT" 
) 

lazy val coreB = Project("CoreB", file("core-b")).settings(
    organization := "org.me", 
    libraryDependencies += "org.apache.kafka" %% "kafka" % "0.8.2-beta", 
    version := "0.3-SNAPSHOT" 
) 

lazy val coreLibrary = Project("UberCore", file("core-main")).dependsOn(coreA, coreB).settings(
    organization := "org.me", 
    version := "0.2-SNAPSHOT" 
) 

Вы можете (к примеру) компиляции каждого проекта из командной строки:

>sbt CoreB/compile 

Или вы можете сделать это в интерактивном режиме:

>sbt 
>project CoreB 
>compile 
1

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

sbt 
projects 
project <helloProject> 

Фактически, эта функция позволяет нескольким людям работать параллельно с одним и тем же проектом. Пожалуйста, взгляните на это: http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Multi-Project.html.

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