我正在使用IDEA 13.1.5旗舰版和sbt 0.13.5(每个Play Activator默认配置),这是我当前的build.sbt
:
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
repo缓存,本地.m2
repo缓存,整个项目目录上进行了全文搜索,手动清除它们,使IDEA缓存无效+重新启动了IDE,但我找不到对包含0.1-SNAPSHOT
的文件的任何引用,除了target/
文件夹,这显然意味着提供了这些信息,但我无法确定它是什么。
我还尝试过activator clean
,然后手动删除target/
个文件夹,但我根本看不到这些信息的来源。
2)在lazy val myLibrary = project
中创建build.sbt
行并刷新IDEA项目后,我希望IDE在myLibrary
项目文件夹中创建sbt常规目录结构,但是,它什么也没做。当然,必须有一种方法来创建这个默认目录结构,而不是我手动创建结构?
我在这里缺少什么?
答案 0 :(得分:2)
您只指定了根版本的版本,而不是您的库。如果没有指定,0.1-SNAPSHOT
是sbt的默认版本。
您必须在build.sbt
中创建myLibrary
并在其中指定版本,或者如果您想使用单个全局版本号,则可以使用version in ThisBuild := "1.0-SNAPSHOT"
。
IntelliJ提供了一个自动创建缺失文件夹的选项,转到偏好设置,搜索sbt
并检查Create directories for empty content roots automatically
。
答案 1 :(得分:0)
我遇到了类似的问题。子项目没有建立,并且在升级到Play 2.3.6和Scala 2.11.1时,sbt未能尝试定位到远程存储库。早些时候Play 2.2和Scala 2.10一切正常。现在我通过放
让一切正常scalaVersion in ThisBuild := "2.11.1"
在根目录或main build.sbt