2012-06-11 51 views
13

所以到目前爲止我已經編譯我的SBT斯卡拉項目(通過類型安全的堆棧)。我想通過sbt-assembly在幾臺機器上運行代碼。遵循指示,我所做的唯一更改是在我的project/Build.scala文件中。下面是相關的部分:獲取SBT組裝工作

resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases", 
resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases", 
libraryDependencies += "com.eed3si9n" % "sbt-assembly" % "0.8.3" 

當我運行sbt compile不過,我得到這個錯誤:

sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly/scala_2.9.1/sbt_0.11.2;0.8.3: not found

我在做什麼錯?

謝謝!

編輯 創建一個build.sbt文件相同的文件夾中Build.scala(文件夾/project/),並有這兩條線在它:

Seq[Setting[_]](resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases", 
       addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3")) 

現在的錯誤是:

[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: com.eed3si9n#sbt-assembly;0.8.3: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] 
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes. 
[warn]  com.eed3si9n:sbt-assembly:0.8.3 (sbtVersion=0.11.2, scalaVersion=2.9.1) 
[warn] 
[error] {file:/Users/myname/current/projectname/project/}default-d7da9a/*:update: sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.8.3: not found 

EDIT 2 嗯,以後我要做一個成功的sbt compile,S我是否可以進入sbt控制檯並輸入assembly

> assembly 
[error] Not a valid command: assembly 
[error] Not a valid project ID: assembly 
[error] Not a valid configuration: assembly 
[error] Not a valid key: assembly 
[error] assembly 
[error] 

編輯3 JK得到它。必須按照GitHub自述文件中的說明添加build.sbt信息。

+0

「信息作爲在GitHub自述文件中指定「 - 請鏈接? – Vasily802

回答

10

這裏有兩點。一個是SBT插件不是只是庫依賴關係 - 特別是,他們使用當前SBT版本的方式與其他Scala庫使用Scala版本類似。另一種是,在libraryDependencies影響project/Build.scala項目的依賴,而不是爲構建

的SBT全力打造自身的SBT項目,只是位於下一層的目錄樹,所以可以配置相同的方式以正常體形是它自己的版本。與普通的構建,到哪兒去了「全力打造」是的情況屈指可數下所必需的,幾乎從來沒有一個理由使用完整的生成一個構建,因此使用.sbt文件位於project/幾乎一直是足夠。

的另一個問題是版本控制。 SBT有一個稱爲addSbtPlugin的實用功能,可以爲您處理所有事情。它需要一個moduleID並添加所有必需的SBT和Scala版本信息。

因此,要獲得SBT組裝在一個完整的構建工作,你在project/(通常要麼project/build.sbtproject/plugins.sbt)下創建一個.sbt文件,並將您的構建的解析器和依賴有:

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) 

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3") 
+0

「addSbtPlugin」參數的格式是什麼?我會爲'sbt-assembly'做些什麼? – adelbertc

+0

'addSbtPlugin(「com.eed3si9n」%「sbt-assembly」%「0.8。3" )',使之與設置您的交易的build.scala部分應該是這樣的: 序列[設置[_](解析器+ = ...,解析器+ = ...,addSbtPlugin(... ))' –

+0

實際上,它突然發生,我認爲你可能把它在錯誤的文件完全。如果這是項目/ Build.scala,然後把它在那裏將做一點好處都沒有(這將宣告你的_source code_取決於SBT組裝,而不是項目)。爲了使項目中使用它,將設置它無論是在項目/ build.sbt或項目/工程/ Build.scala(最好是前者,因爲幾乎從來沒有一個之所以用全力打造該項目的元版本)。 –