これがしばらくの間可能かどうかを探していましたが、ほとんど成功していません。
SBT を使用して、各プロジェクトを独自のプロジェクトに明示的に割り当てることなく、プログラムでサブプロジェクトを作成できますval
か?
私の現在のプロジェクト構造は次のようになります。
root/
common/ <--- This is another sub-project that others dependOn
project/
build.scala
src/main/scala
apps/ <--- sub-projects live here
Sub1/
Sub2/
Sub1
両方ともSub2
独自の SBT プロジェクトです。
これらのプロジェクトをリンクする最初の試みは次のようになりました。
// root/project/build.scala
import sbt._
import Keys._
object build extends Build {
lazy val common = project /* Pseudo-code */
val names = List("Sub1", "Sub2")
lazy val deps = names map { name =>
Project(id = name, base = file(s"apps/$name")).dependsOn(common)
}
lazy val finalDeps = common :: deps
lazy val root = project.in(file(".")).aggregate(finalDeps.map(sbt.Project.projectToRef) :_*)
.dependsOn(finalDeps.map(ClassPathDependency(_, None)) :_*)
}
ただし、SBT はリフレクションを使用してそのプロジェクトとサブプロジェクトを構築するため、これは機能しません。
各サブプロジェクトが明示的に記述されている場合にのみ機能します。
lazy val Sub1 = project.in(file("apps/Sub1"))
だから質問:
SBT でサブプロジェクトの依存関係をプログラムで構築する方法はありますか?