以下是我的多项目结构:
myApp
+ build.sbt
+ sub-prj-1
+ build.sbt
+ sub-prj-2
+ build.sbt
+ project
+ Build.scala
Run Code Online (Sandbox Code Playgroud)
我用这个来定义常用设置project/Build.scala:
import sbt._
import Keys._
object ApplicationBuild extends Build {
val defaultScalacOptions = Seq(
"-unchecked", "-deprecation", "-feature", "-language:reflectiveCalls", "-language:implicitConversions",
"-language:postfixOps", "-language:dynamics", "-language:higherKinds", "-language:existentials",
"-language:experimental.macros", "-encoding", "UTF-8", "-Xmax-classfile-name", "140")
val defaultResolvers = Seq(
"Typesafe releases repository" at "http://repo.typesafe.com/typesafe/releases/"
)
val defaultSettings = Defaults.defaultSettings ++ Seq(
scalaVersion := "2.10.4",
scalacOptions ++= defaultScalacOptions,
resolvers ++= defaultResolvers
)
}
Run Code Online (Sandbox Code Playgroud)
...然后我在每个build.sbt文件中引用这些常见设置:
name := "myapp"
organization := "Test, Inc."
version := "1.0"
ApplicationBuild.defaultSettings // it looks like common settings defined in
// project/Build.scala are not read...
scalacOptions += "-feature" // already defined in ApplicationBuild.defaultSettings...
// but if I don't define it here, it doesn't work
lazy val `sub-prj-1` = project.in(file("sub-prj-1"))
lazy val `sub-prj-2` = project.in(file("sub-prj-2"))
lazy val brix = project.in(file(".")).settings(
publishArtifact := false
).aggregate(
`sub-prj-1`,
`sub-prj-2`
)
Run Code Online (Sandbox Code Playgroud)
例如,scalacOptions += "-feature"已经在Build.scala...中定义但是如果我没有定义它,build.sbt我总是得到以下警告:
[warn] there were 1 deprecation warning(s); re-run with -deprecation for details
[warn] one warning found
Run Code Online (Sandbox Code Playgroud)
任何的想法?我错过了什么吗?我安装了sbt 0.13.5后首先出现了这个问题.
编辑
这是以下内容scalacOptions:
[info] sub-prj-1/*:scalacOptions
[info] List(-unchecked, -deprecation, -feature, -language:reflectiveCalls, -language:implicitConversions, -language:postfixOps, -language:dynamics, -language:higherKinds, -language:existentials, -language:experimental.macros, -encoding, UTF-8, -Xmax-classfile-name, 140)
[info] sub-prj-2/*:scalacOptions
[info] List(-unchecked, -deprecation, -feature, -language:reflectiveCalls, -language:implicitConversions, -language:postfixOps, -language:dynamics, -language:higherKinds, -language:existentials, -language:experimental.macros, -encoding, UTF-8, -Xmax-classfile-name, 140)
[info] myapp/*:scalacOptions
[info] List(-unchecked, -deprecation, -feature, -language:reflectiveCalls, -language:implicitConversions, -language:postfixOps, -language:dynamics, -language:higherKinds, -language:existentials, -language:experimental.macros, -encoding, UTF-8, -Xmax-classfile-name, 140)
Run Code Online (Sandbox Code Playgroud)
我只能猜测(并指出错误时需要纠正的其他信息),但warn消息来自构建项目(下project)而不是你的.
我在0.13.6-SNAPSHOT(从今天的消息来源建立),所以你的里程可能会有所不同.
? myApp xsbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/common-settings/myApp/project
[info] Updating {file:/Users/jacek/sandbox/common-settings/myApp/project/}myapp-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Compiling 1 Scala source to /Users/jacek/sandbox/common-settings/myApp/project/target/scala-2.10/sbt-0.13/classes...
[warn] there were 1 deprecation warning(s); re-run with -deprecation for details
[warn] one warning found
[info] Set current project to brix (in build file:/Users/jacek/sandbox/common-settings/myApp/)
Run Code Online (Sandbox Code Playgroud)
当我试图重现你的情况时,我最终得到了构建定义的消息project:
[warn] there were 1 deprecation warning(s); re-run with -deprecation for details
[warn] one warning found
Run Code Online (Sandbox Code Playgroud)
它们是你想要摆脱的吗?如果是这样,请继续阅读.否则,请在您的问题中添加其他信息.谢谢.
对于sbt是递归的,下面project是另一个构建定义(等等).
为了消除这些消息,您应该遵循他们的建议并添加-deprecation到相应项目的构建定义中.将以下内容添加到project/build.sbt:
scalacOptions += "-deprecation"
Run Code Online (Sandbox Code Playgroud)
有了这个,reload神秘就被揭开了.
? myApp xsbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/common-settings/myApp/project
[info] Compiling 1 Scala source to /Users/jacek/sandbox/common-settings/myApp/project/target/scala-2.10/sbt-0.13/classes...
[warn] /Users/jacek/sandbox/common-settings/myApp/project/Build.scala:15: value defaultSettings in object Defaults is deprecated: 0.13.2
[warn] val defaultSettings = Defaults.defaultSettings ++ Seq(
[warn] ^
[warn] one warning found
[info] Set current project to brix (in build file:/Users/jacek/sandbox/common-settings/myApp/)
>
Run Code Online (Sandbox Code Playgroud)
@deprecated("0.13.2", "Default settings split into `coreDefaultSettings` and IvyModule/JvmModule plugins.")
Run Code Online (Sandbox Code Playgroud)
要解决这个问题,请阅读文章预览即将推出的sbt 1.0功能:阅读有关新插件的内容.
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |