2012-01-28 91 views
4

我試圖找出使用SBT時的想法是如何認識黨THRID依賴。當我使用sbt plugin gen-idea時,它似乎下載了所有必要的依賴關係,這些依賴關係如預期的那樣放入我的〜/ .ivy /目錄。 intellij如何使用這些代碼?如何獲得的IntelliJ使用依賴從SBT斯卡拉

編輯: 有一件事我注意到的是,如果我提出一個新的想法項目,而不是僅僅一個模塊那麼這個作品的?任何想法,爲什麼會這樣?我希望能夠在同一個項目中擁有多個sbt模塊。

+0

您是否嘗試過更新命令? 我曾經有過的另一個錯誤是我設置了sbt配置但沒有重新啓動控制檯。這裏只是一些提示。 – 2012-01-28 22:23:51

回答

3

sbt-idea插件可用於多模塊SBT項目。我們一直在使用它,因爲在sbt-0.10.0的某個地方,目前是sbt-0.11.2。好像你必須設置好構建文件的相關性部分,所以這裏是我們如何做,從一個完整的規範Build.scala文件的項目設置的例子:

object Vcaf extends Build { 
    import Resolvers._ 
    import Dependencies._ 
    import BuildSettings._ 

    lazy val vcafDb = Project(
    id = "vcaf-db", 
    base = file("./vcaf-db"), 
    dependencies = Seq(), 
    settings = buildSettings ++ /* proguard */ SbtOneJar.oneJarSettings ++ Seq(libraryDependencies := dbDeps, resolvers := cseResolvers) 
) 

    lazy val vcaf = Project(
    "vcaf", 
    file("."), 
    dependencies = Seq(vcafDb), 
    aggregate = Seq(vcafDb), 
    settings = buildSettings ++ Seq(libraryDependencies := vcafDeps, resolvers := cseResolvers) ++ webSettings 
) 
} 

在這個例子中,vcaf-數據庫項目位於vcaf項目文件夾內的文件夾中。 vcaf-db項目沒有自己的build.sbt或Build.scala文件。您會注意到我們正在爲每個項目指定libraryDependencies,這可能是也可能不是您的缺失鏈接。

正如ChrisJamesC提到的,你需要從內SBT做了「重載」(或退出SBT和回來)拿起更改您的構建定義。重新加載項目後,您應該能夠執行「gen-idea no-classifiers no-sbt-classifiers」並獲取具有構建文件中定義的主項目,模塊和庫訪問權限的intellij項目。

希望它有幫助!

0

如果你想在一個IDEA項目多SBT模塊,你可以使用SBT multi-project builds(又名子項目)。只需創建一個將模塊引用爲子項目的主項目,然後在主服務器上運行gen-idea。爲了您必須使用Build.scala(不build.sbt),如jxstanford的答案各模塊之間或像這樣指定的依賴關係:

lazy val foo = Project(id = "foo", base = file("foo")) 
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo) 

一個子項目的水平正常工作(用正確地反映在產生的依賴IDEA項目),但嵌套的子項目似乎不起作用。此外,子項目必須存在於主項目的子目錄中(即不允許使用file("../foo"))似乎是一種限制。

How to manage multiple interdependent modules with SBT and IntelliJ IDEA?見。