這似乎不起作用。我想要的主要原因是在多個多項目中共享通用設置,如「publishTo」或「credentials」。我可以在另一個多項目中使用多項目嗎?
有一個項目結構這樣
root
|--L1
|--L2
我想在L1定義設置和L2使用它們,以及在根定義設置,並在L1和L2使用它們。
這似乎不起作用。我想要的主要原因是在多個多項目中共享通用設置,如「publishTo」或「credentials」。我可以在另一個多項目中使用多項目嗎?
有一個項目結構這樣
root
|--L1
|--L2
我想在L1定義設置和L2使用它們,以及在根定義設置,並在L1和L2使用它們。
通常情況下,你可以在任何子項目構建級別共享設置,通過在build.sbt
文件在項目的根目錄指定in ThisBuild
,如http://www.scala-sbt.org/release/docs/Getting-Started/Multi-Project.html#sharing-settings
提及,但只適用於共享中所有的值項目。
在你的情況,如果你定義了你的項目,在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
>
答案是肯定的,但我只知道這是可能的。我的同事建立了一個統一一些以前不同但相互關聯的項目。我會盡力讓他回答。 – 2013-04-10 14:49:33