簡體   English   中英

參考子項目中sbt根項目中的設置

[英]Referring to a setting in an sbt root project from a sub project

如何從多項目sbt構建中的baseDirectory中引用根項目的baseDirectory? 喜歡

lazy val full: Project = Project(
  id = "full",
  base = file("."),
  ..
)

lazy val sub = Project(
  id = "sub",
  base = file("sub"),
  ..
  settings = Seq(
    javaSource in Compile := full.settings.baseDirectory / "foo" / "src"
  )
)

這個嘗試只是給了我:

: error: ambiguous reference to overloaded definition,
both method settings in trait Project of type (ss: sbt.Def.Setting[_]*)sbt.Project
and  method settings in trait ProjectDefinition of type => Seq[sbt.Def.Setting[_]]
match expected type ?
    javaSource in Compile := full.settings.baseDirectory / "foo" / "src",
                                  ^

在sbt中,項目只是另一個設置 (以及配置和任務)。 因此,您可以使用in運算符來訪問另一個項目中的設置值。 要獲取的值baseDirectory在項目設置鍵full ,你會寫

(baseDirectory in full).value

因此,您的完整javaSource設置應該是:

javaSource in Compile := (baseDirectory in full).value / "foo" / "src"

有關整個故事,請參閱sbt中有關Scopes的文檔。

(注意,在訪問settings一個的方法, Project很少做自己想要的東西,我相信只有當寫自定義命令有關。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM