2011-06-28 50 views
5

我有一個SBT 0.10.0項目,聲明瞭幾個依賴關係有點像:如何從SBT獲得依賴罐的列表0.10.0項目

object MyBuild extends Build { 
    val commonDeps = Seq("commons-httpclient" % "commons-httpclient" % "3.1", 
         "commons-lang" % "commons-lang" % "2.6") 

    val buildSettings = Defaults.defaultSettings ++ Seq (organization := "org") 

    lazy val proj = Project("proj", file("src"), 
     settings = buildSettings ++ Seq(
      name     := "projname", 
      libraryDependencies  := commonDeps, ...) 

    ... 
} 

我想創造一個生成規則收集所有「proj」的jar依賴項,以便我可以將它們符號鏈接到單個目錄。

謝謝。

+0

'libraryDependencies'的值?認爲你可以在命令行上啓動sbt並編寫lib + 並獲得建議。 – eivindw

+0

我知道OP詢問了sbt 10.0,但對於其他人,我只是注意到在11.3中可以使用「sbt classpath」獲得類路徑。 – Traveler

回答

8

例SBT任務打印完整的運行時類路徑

下面是我使用的大致內容。 「get-jars」任務可從SBT提示符執行。

import sbt._ 
import Keys._ 
object MyBuild extends Build { 
    // ... 
    val getJars = TaskKey[Unit]("get-jars") 
    val getJarsTask = getJars <<= (target, fullClasspath in Runtime) map { (target, cp) => 
    println("Target path is: "+target) 
    println("Full classpath is: "+cp.map(_.data).mkString(":")) 
    } 
    lazy val project = Project (
    "project", 
    file ("."), 
    settings = Defaults.defaultSettings ++ Seq(getJarsTask) 
) 
} 

其他資源

  • Unofficial guide到SBT 0.10。
  • Keys.scala定義了預定義的鍵。例如,您可能需要用managedClasspath替換fullClasspath
  • This plugin定義了一個簡單的命令來生成.ensime文件,並且可能是一個有用的參考。
+2

謝謝!那個非官方的指導鏈接非常好,我希望以前能找到它。順便說一句,你有一個很棒的名字。 – crelbor

+0

謝謝!樂意效勞。 –