2013-08-17 205 views
2

我有以下生成:SBT項目導航

lazy val stampleSearchProject = RootProject(file("../stample-search")) 


    lazy val main = play.Project(appName, appVersion, appDependencies) 
    .dependsOn(stampleSearchProject) 
    .settings(defaultScalaSettings:_*) 
    .settings(.........) 

的stample搜索項目有name := "stample-search"

我已經在SBT文檔中發現了一個build.sbt文件:

以交互方式導航項目: 在sbt交互式提示中,輸入 項目以列出您的項目和項目以選擇 當前專業版JECT。當您運行像編譯這樣的任務時,它將在 當前項目上運行。所以你不一定要編譯根目錄 項目,你只能編譯一個子項目。

但SBT文件不使用RootProject但使用項目,而不是(這似乎需要使用root項目中一個項目的路徑,我的意思是我無法用../my-project

所以,我想這個。

[Stample] $ projects 
[info] In file:/home/sebastien/Bureau/Stample/stample-web/ 
[info] * Stample 
[info] In file:/home/sebastien/Bureau/Stample/stample-search/ 
[info]  default-ccdbaa 

如此看來,列出兩個項目,但我想知道哪裏來這個名字default-ccdbaa

然後我嘗試使用項目的命令

[Stample] $ project Stample 
[info] Set current project to Stample (in build file:/home/sebastien/Bureau/Stample/stample-web/) 

[Stample] $ project default-ccdbaa 
[error] Invalid project name 'default-ccdbaa' in build file:/home/sebastien/Bureau/Stample/stample-web/ (type 'projects' to list available projects). 

[Stample] $ project stample-search 
[error] Invalid project name 'stample-search' in build file:/home/sebastien/Bureau/Stample/stample-web/ (type 'projects' to list available projects). 

似乎不上班。有人能解釋我的構建有什麼問題嗎?

回答

3

有關詳細信息,你可能要讀Full Configuration (Draft) : Project Relationships

有3種SBT項目的關係。這些由執行,類路徑和配置依賴性來描述。 ...

RootProject定義了項目引用,而不是子項目。所以你正在有效地創建一個源代碼級別的依賴項,但是你不能切換到它。更好的方法是使用普通的Multi-Project build

import sbt._ 
import Keys._ 

object HelloBuild extends Build { 
    lazy val root = Project(id = "hello", 
          base = file(".")) aggregate(foo, bar) 

    lazy val foo = Project(id = "hello-foo", 
         base = file("foo")) 

    lazy val bar = Project(id = "hello-bar", 
         base = file("bar")) 
} 
+0

請問您能檢查這種相關問題嗎? :) http://stackoverflow.com/questions/18452142/sbt-does-not-want-to-enter-my-project-using-project-command –