don't warn when current sbt version doesn't match version in build.properties when version is set by system property.

mitigates https://github.com/sbt/sbt/issues/4303
This commit is contained in:
Justin Kaeser 2018-08-16 18:01:54 +03:00
parent e313193609
commit a50e351c58
1 changed files with 14 additions and 5 deletions

View File

@ -780,21 +780,30 @@ object BuiltinCommands {
def checkSBTVersionChanged(state: State): Unit = {
import sbt.io.syntax._
val app = state.configuration.provider
val sbtVersionProperty = "sbt.version"
// Don't warn if current version has been set in system properties
val sbtVersionSystemOpt =
Option(System.getProperty(sbtVersionProperty))
// the intention is to warn if build.properties file has changed during current sbt session
// a `reload` will not respect this change while `reboot` will.
val buildProps = state.baseDir / "project" / "build.properties"
// First try reading the sbt version from build.properties file.
val sbtVersionOpt = if (buildProps.exists) {
val sbtVersionBuildOpt = if (buildProps.exists) {
val buildProperties = new Properties()
IO.load(buildProperties, buildProps)
Option(buildProperties.getProperty("sbt.version"))
Option(buildProperties.getProperty(sbtVersionProperty))
} else None
val sbtVersionOpt = sbtVersionSystemOpt.orElse(sbtVersionBuildOpt)
val app = state.configuration.provider
sbtVersionOpt.foreach(
version =>
if (version != app.id.version()) {
state.log.warn(s"""sbt version mismatch, current: ${app.id
.version()}, in build.properties: "$version", use 'reboot' to use the new value.""")
}
}
)
}