2014-10-06 51 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

相关问题