それはうまくいかないようです。私がそれを望む主な理由は、「publishTo」や「credentials」などの共通設定を複数のマルチプロジェクト間で共有することです。
このようなプロジェクト構造を持つ
root
|--L1
|--L2
L1 で設定を定義して L2 で使用したいのですが、ルートで設定を定義して L1 と L2 で使用したいと考えています。
通常、 http://www.scala-sbt.org/release/docs/Getting-Started/Multiin ThisBuild
で説明されているように、プロジェクトのルートにあるbuild.sbt
ファイルで指定することにより、ビルド レベルの設定を任意のサブプロジェクトと共有できます。 -Project.html#共有設定
しかし、それはすべてのプロジェクト間で価値を共有するためにのみ機能します。
あなたの場合、プロジェクトを次のように定義した場合Build.scala
import sbt._
import Keys._
object MyBuild extends Build {
lazy val root = Project(id = "root",
base = file("."))
lazy val L1 = Project(id = "L1",
base = file("L1"))
lazy val L2 = Project(id = "L2",
base = file("L1/L2"))
}
publishTo
で定義したキー (例: )L1
を再利用したい場合L2
は、 に次の行を記述します。L2
build.sbt
publishTo <<= publishTo in L1
sbt でコマンドを使用して、inspect
キー値とその設定方法を確認できます。
> projects
[info] In file:/Users/leo/src/project0/
[info] L1
[info] L2
[info] * root
> project L2
[info] Set current project to L2 (in build file:/Users/leo/src/project0/)
> inspect publish-to
[info] Setting: scala.Option[sbt.Resolver] = Some(Repo1: https://repo1.org)
[info] Description:
[info] The resolver to publish to.
[info] Provided by:
[info] {file:/Users/leo/src/project0/}L2/*:publish-to
[info] Defined at:
[info] /Users/leo/src/project0/L1/L2/build.sbt:1
[info] Dependencies:
[info] L1/*:publish-to
[info] Reverse dependencies:
[info] L2/*:publish-configuration
[info] L2/*:other-resolvers
[info] Delegates:
[info] L2/*:publish-to
[info] {.}/*:publish-to
[info] */*:publish-to
[info] Related:
[info] L1/*:publish-to
[info] */*:publish-to
[info] {.}/*:publish-to
>