Я бы не хотел добавлять каждый проект вручную. Есть ли способ автоматического добавления новых проектов?
Конечно. Это немного продвинутое использование sbt, но вы можете создать специальный плагин, который генерирует подпроекты программно.
build.sbt
ThisBuild / scalaVersion := "2.12.8"
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"
ThisBuild / organizationName := "example"
проект / build.properties
sbt.version=1.2.8
Проект / SubprojectPlugin.scala
import sbt._
object SubprojectPlugin extends AutoPlugin {
override val requires = sbt.plugins.JvmPlugin
override val trigger = allRequirements
override lazy val extraProjects: Seq[Project] = {
val dirs = (file(".") * ("*" -- "project" -- "target")) filter { _.isDirectory }
dirs.get.toList map { dir =>
Project(dir.getName.replaceAll("""\W""", "_"), dir)
}
}
}
Теперь, если вы запустите sbt
, любые каталоги, которые не называются target
или project
, будут преобразованы в подпроект.
sbt:generic-root> projects
[info] In file:/private/tmp/generic-root/
[info] * generic-root
[info] hello_world
[info] robot_name
[info] sum_of_multiple
привет-мир / build.sbt
Для добавления дополнительных настроек вы можете создать файл build.sbt
в каталоге следующим образом:
libraryDependencies += "commons-io" % "commons-io" % "2.6"