2017-03-20 11 views
8

私はたくさんのサブプロジェクトがあり、そのうちのいくつかはサブプロジェクトを持っています。その上に、私はそれらのいくつかを動的にしたいと思います - Listがプロジェクトビルドのどこかにあるとすれば、それぞれの要素に対して1つのプロジェクトを作成したいと思います。怠惰なvalを使わないSBTのマルチプロジェクトビルド

これらの理由から、build.sbtに各プロジェクトのlazy valを定義することは非常に面倒です。 addProjectのようにどこからでも呼び出すことができるような、プロジェクトを宣言する別の方法はありますか?そこに役立ついくつかのSBTプラグインはありますか?

答えて

1

Sbtはマクロを使用してトップレベルvalをプロジェクトに変換するため、その部分をエスケープすることはできません。しかし、あなたはProject => Project機能で構築すべてを定義することができます(関数合成で「無料で」というあなたも構成可能性に注意してください)

def myConf: Project => Project = 
    _.enablePlugins(ScalaJSPlugin) 
    .settings(scalaVersion := "2.12.0") 

そして、単に単一ラインプロジェクトの定義についてproject.configure(myConf)を使用します。

lazy val subProject1 = project.configure(myConf) 
lazy val subProject2 = project.configure(myConf) 
lazy val subProject3 = project.configure(myConf) 
lazy val subProject4 = project.configure(myConf) 
...