У меня есть проект с несколькими модулями sbt, который настроен для сборки sbt. В этом проекте я хочу пропустить генерацию живого флага для подпроектов, которые не предназначены для исполнения, чтобы ускорить наращивание. Но я не уверен, как это делается.
SBT-сборка пропускает некоторые подпроекты
Ответ 1
Просто не включайте настройки сборки в подмодулях, которые этого не требуют.
Например, используя sbt 0.13.5 и sbt-assembly 0.11.2, здесь представлен многомодульный проект. Если вы запустите assembly
в корне, просто проект "app" будет превращен в жирную банку.
project/Build.scala
import sbt._
import Keys._
import sbtassembly.Plugin.assemblySettings
object MyApp extends Build {
lazy val root = Project("root", file(".")).aggregate(common, app)
lazy val common = Project("common", file("common"))
lazy val app = Project("app", file("app")).settings(assemblySettings: _*).dependsOn(common)
}
common/src/main/scala/com/example/common/Hello.scala
package com.example.common
object Hello {
def hello(name: String): String = s"Hello, $name"
}
app/src/main/scala/com/example/hello/App.scala
package com.example.hello
import com.example.common.Hello._
object Main extends App {
println(hello(args(0)))
}
Ответ 2
Если вы используете файл build.sbt, вы можете отключить модуль сборки для модуля следующим образом:
lazy val module = (project in file("module"))
.disablePlugins(sbtassembly.AssemblyPlugin)
.settings(
...
)
Это также работает для корневого модуля:
lazy val 'project-name' = (project in file("."))
.disablePlugins(sbtassembly.AssemblyPlugin)
.aggregate('module-1', 'module-2')
.settings(
...
)
(Ответ найден благодаря комментарию @tobym в другом ответе.)