From 1f051110a3f9cbf65b81ed92a6001ef25808976b Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Thu, 20 Apr 2017 14:14:42 +0200 Subject: [PATCH 1/3] Updates to POM metadata --- src/main/scala/ScalaModulePlugin.scala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/scala/ScalaModulePlugin.scala b/src/main/scala/ScalaModulePlugin.scala index 2b8ab36..a74bcae 100644 --- a/src/main/scala/ScalaModulePlugin.scala +++ b/src/main/scala/ScalaModulePlugin.scala @@ -72,17 +72,17 @@ object ScalaModulePlugin extends Plugin { pomIncludeRepository := { _ => false }, pomExtra := ( - JIRA - https://issues.scala-lang.org/ + GitHub + https://github.com/scala/{repoName.value}/issues - epfl - EPFL + lamp + LAMP/EPFL - Typesafe - Typesafe, Inc. + Lightbend + Lightbend, Inc. ) From 50e75c5db7d83951cb56b9cbebdf538b84cf9cd6 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Thu, 20 Apr 2017 14:25:43 +0200 Subject: [PATCH 2/3] Remove snapshots resolver, we don't publish Scala snapshots --- src/main/scala/ScalaModulePlugin.scala | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/scala/ScalaModulePlugin.scala b/src/main/scala/ScalaModulePlugin.scala index a74bcae..8b5218a 100644 --- a/src/main/scala/ScalaModulePlugin.scala +++ b/src/main/scala/ScalaModulePlugin.scala @@ -20,11 +20,6 @@ object ScalaModulePlugin extends Plugin { // so we don't have to wait for sonatype to synch to maven central when deploying a new module resolvers += Resolver.sonatypeRepo("releases"), - // to allow compiling against snapshot versions of Scala - resolvers += Resolver.sonatypeRepo("snapshots"), - - // resolvers += "scala-release-temp" at "http://private-repo.typesafe.com/typesafe/scala-release-temp/" - // don't use for doc scope, scaladoc warnings are not to be reckoned with // TODO: turn on for nightlies, but don't enable for PR validation... "-Xfatal-warnings" scalacOptions in compile ++= Seq("-optimize", "-feature", "-deprecation", "-unchecked", "-Xlint"), From 24ebe952c869db59e46833fb343013f890343e52 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Thu, 20 Apr 2017 15:42:45 +0200 Subject: [PATCH 3/3] Introduce new scalaVersionsByJvm setting --- src/main/scala/ScalaModulePlugin.scala | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/scala/ScalaModulePlugin.scala b/src/main/scala/ScalaModulePlugin.scala index 8b5218a..7d27ab9 100644 --- a/src/main/scala/ScalaModulePlugin.scala +++ b/src/main/scala/ScalaModulePlugin.scala @@ -6,6 +6,7 @@ import com.typesafe.tools.mima.plugin.{MimaPlugin, MimaKeys}, MimaKeys._ object ScalaModulePlugin extends Plugin { val repoName = settingKey[String]("The name of the repository under github.com/scala/.") val mimaPreviousVersion = settingKey[Option[String]]("The version of this module to compare against when running MiMa.") + val scalaVersionsByJvm = settingKey[Map[Int, List[(String, Boolean)]]]("For a Java major version (6, 8, 9), a list of Scala version and a flag indicating whether to use this combination for publishing.") private val canRunMima = taskKey[Boolean]("Decides if MiMa should run.") private val runMimaIfEnabled = taskKey[Unit]("Run MiMa if mimaPreviousVersion and the module can be resolved against the current scalaBinaryVersion.") @@ -15,6 +16,35 @@ object ScalaModulePlugin extends Plugin { mimaPreviousVersion := None, + scalaVersionsByJvm := Map.empty, + + crossScalaVersions := { + val OneDot = """1\.(\d).*""".r // 1.6, 1.8 + val Maj = """(\d+).*""".r // 9 + val javaVersion = System.getProperty("java.version") match { + case OneDot(n) => n.toInt + case Maj(n) => n.toInt + case v => throw new RuntimeException(s"Unknown Java version: $v") + } + val isTravisPublishing = Option(System.getenv("TRAVIS_TAG")).getOrElse("").trim.nonEmpty + val scalaVersions = scalaVersionsByJvm.value.getOrElse(javaVersion, Nil) collect { + case (v, publish) if !isTravisPublishing || publish => v + } + if (scalaVersions.isEmpty) { + if (isTravisPublishing) { + sLog.value.warn(s"No Scala version in `scalaVersionsByJvm` in build.sbt needs to be released on Java major version $javaVersion.") + // Exit successfully, don't fail the (travis) build. This happens for example if `openjdk7` + // is part of the travis configuration for testing, but it's not used for releasing against + // any Scala version. + System.exit(0) + } else + throw new RuntimeException(s"No Scala version for Java major version $javaVersion. Adjust `scalaVersionsByJvm` in build.sbt.") + } + scalaVersions + }, + + scalaVersion := crossScalaVersions.value.head, + organization := "org.scala-lang.modules", // so we don't have to wait for sonatype to synch to maven central when deploying a new module