2014-10-06 66 views
1

我使用IDEA 13.1.5終極版和SBT 0.13.5(每播放激活默認配置),這裏是我目前build.sbt爲什麼sbt堅持使用0.1-SNAPSHOT作爲項目版本?

name := """my-first-app""" 

version := "1.0-SNAPSHOT" 

lazy val root = (project in file(".")) 
    .enablePlugins(PlayJava) 
    .aggregate(myLibrary) 
    .dependsOn(myLibrary) 

lazy val myLibrary = (project in file("myLibrary")) 
    .enablePlugins(PlayJava) 

scalaVersion := "2.11.1" 

libraryDependencies ++= Seq(
    javaJdbc, 
    javaEbean, 
    cache, 
    javaWs 
) 

libraryDependencies ++= Seq(
    "net.sf.jsefa" % "jsefa" % "1.1.1.RELEASE" 
) 

我看到兩個問題:

1)SBT是由於某種原因試圖解決myLibrary項目的錯誤版本 - 出於某種原因,它試圖解決0.1-SNAPSHOT而不是什麼1.0-SNAPSHOT版本(這是我所期望的);例如,sbt update返回此:

[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: mylibrary#mylibrary_2.11;0.1-SNAPSHOT: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[trace] Stack trace suppressed: run 'last root/*:update' for the full output. 
[error] (root/*:update) sbt.ResolveException: unresolved dependency: mylibrary#mylibrary_2.11;0.1-SNAPSHOT: not found 

我不明白爲什麼 - 我已經做了本地.ivy回購緩存全文搜索,本地.m2回購緩存,整個項目目錄,手動清除所有這些,無效IDEA緩存+重新啓動IDE,並且我仍然找不到包含0.1-SNAPSHOT的文件的任何引用,但target/文件夾中的文件很明顯,這意味着某些內容提供了此信息,但我無法確定它是什麼。

我也嘗試過activator clean,然後手動刪除target/文件夾,但我根本看不到這些信息來自哪裏。

2)在build.sbt創建lazy val myLibrary = project行並刷新IDEA項目時,我期望IDE在myLibrary項目文件夾中創建sbt常規目錄結構,但是它什麼都不做。當然,必須有一種方法來創建這個默認的目錄結構,而不是我手動創建結構?

缺少什麼我在這裏?

回答

2

您只指定了根構建的版本,而不是庫。如果沒有指定,0.1-SNAPSHOT是sbt的默認版本。

你要麼必須建立在你的myLibrary一個build.sbt並指定版本存在,或者如果你想使用一個單一的全球版本號,您可以使用version in ThisBuild := "1.0-SNAPSHOT"

IntelliJ提供了一個選項來自動創建丟失的文件夾,轉到首選項,搜索sbt並檢查Create directories for empty content roots automatically

+0

嗯,有趣的 - 我不知道該複選框被關閉,感謝您的!是的,IDEA現在正在創建預期結構,但即使在將構建設置爲[1.0-SNAPSHOT](https://imageshack.com/i/f0jSxdqop)後,我仍然會發現舊的[0.1-SNAPSHOT](https:// (項目目標文件夾中的imageshack.com/i/paUeIZLsp)文件(我之前實驗的剩餘物)(鏈接顯示圖片)。我如何擺脫它們以及需要調用哪些文件夾來清理該文件夾? – quantum 2014-10-06 18:54:06

+0

不,仍然一樣 - 試圖在'scalaVersion'和'name'設置上放置'ThisBuild'。我也嘗試在'myLibrary'項目中創建一個'build.sbt'文件,以查看是否會覆蓋版本 - 什麼都不是。出於某種原因,我也看到我的'〜/ .sbt/boot'文件夾有三個不同的scala版本(2.10.2,2.10.4,2.11.1),即使我期望看到最新的一個。可以連接嗎? – quantum 2014-10-06 19:13:23

+0

但現在它能正確解析嗎?我認爲解析緩存只與sbt相關,可能仍然使用Scala 2.10。 – 2014-10-06 19:16:43

0

我正面臨類似的問題。子項目沒有建立,並且sbt未能嘗試定位到遠程存儲庫,同時升級到Play 2.3.6和Scala 2.11.1。早些時候Play 2.2和Scala 2.10一切正常。現在我得到的一切努力通過把

scalaVersion in ThisBuild := "2.11.1" 

根或main build.sbt

相關問題