这似乎不起作用。我想要的主要原因是在多个多项目中共享通用设置,如“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