2015-01-22 20:26:34 +02:00
|
|
|
/**
|
2018-01-04 17:26:29 +00:00
|
|
|
* Copyright (C) 2009-2018 Lightbend Inc. <https://www.lightbend.com>
|
2015-01-22 20:26:34 +02:00
|
|
|
*/
|
2018-03-13 23:45:55 +09:00
|
|
|
|
2015-01-22 20:26:34 +02:00
|
|
|
package akka
|
|
|
|
|
|
2015-02-19 15:49:02 +01:00
|
|
|
import sbt._
|
2016-03-10 10:45:35 +02:00
|
|
|
import sbt.Keys._
|
|
|
|
|
import com.typesafe.tools.mima.plugin.MimaPlugin
|
|
|
|
|
import com.typesafe.tools.mima.plugin.MimaPlugin.autoImport._
|
2015-01-22 20:26:34 +02:00
|
|
|
|
|
|
|
|
object MiMa extends AutoPlugin {
|
|
|
|
|
|
2018-11-09 09:16:33 +01:00
|
|
|
private val latestPatchOf25 = 18
|
2018-04-13 10:13:07 +02:00
|
|
|
private val latestPatchOf24 = 20
|
2017-07-27 13:33:14 +03:00
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
override def requires = MimaPlugin
|
2015-01-22 20:26:34 +02:00
|
|
|
override def trigger = allRequirements
|
|
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
override val projectSettings = Seq(
|
2017-10-06 10:30:28 +02:00
|
|
|
mimaPreviousArtifacts := akkaPreviousArtifacts(name.value, organization.value, scalaBinaryVersion.value))
|
2015-05-21 09:48:49 +03:00
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
def akkaPreviousArtifacts(projectName: String, organization: String, scalaBinaryVersion: String): Set[sbt.ModuleID] = {
|
2016-12-15 16:01:32 +01:00
|
|
|
val versions: Seq[String] = {
|
2016-03-10 10:45:35 +02:00
|
|
|
val akka24NoStreamVersions = Seq("2.4.0", "2.4.1")
|
2018-04-13 10:13:07 +02:00
|
|
|
val akka25Versions = (0 to latestPatchOf25).map(patch ⇒ s"2.5.$patch")
|
2018-12-05 13:01:24 +00:00
|
|
|
val akka24StreamVersions = (2 to 12).map("2.4." + _)
|
|
|
|
|
val akka25DiscoveryVersions = (19 to latestPatchOf25).map(patch => s"2.5.$patch")
|
2017-10-30 03:13:14 +02:00
|
|
|
val akka24WithScala212 =
|
2018-04-13 10:13:07 +02:00
|
|
|
(13 to latestPatchOf24)
|
2017-10-06 10:30:28 +02:00
|
|
|
.map("2.4." + _)
|
2017-02-14 12:32:42 +01:00
|
|
|
.filterNot(_ == "2.4.15") // 2.4.15 was released from the wrong branch and never announced
|
|
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
val akka242NewArtifacts = Seq(
|
|
|
|
|
"akka-stream",
|
2017-10-06 10:30:28 +02:00
|
|
|
"akka-stream-testkit")
|
2016-12-15 16:01:32 +01:00
|
|
|
val akka250NewArtifacts = Seq(
|
2017-10-06 10:30:28 +02:00
|
|
|
"akka-persistence-query")
|
2018-12-05 13:01:24 +00:00
|
|
|
val akka2519NewArtifacts = Seq(
|
|
|
|
|
"akka-discovery"
|
|
|
|
|
)
|
2016-12-15 16:01:32 +01:00
|
|
|
|
2016-03-10 10:45:35 +02:00
|
|
|
scalaBinaryVersion match {
|
2017-10-06 10:30:28 +02:00
|
|
|
case "2.11" ⇒
|
2018-12-05 13:01:24 +00:00
|
|
|
if (akka2519NewArtifacts.contains(projectName))
|
|
|
|
|
akka25DiscoveryVersions
|
|
|
|
|
else if (akka250NewArtifacts.contains(projectName)) akka25Versions
|
2016-12-15 16:01:32 +01:00
|
|
|
else {
|
|
|
|
|
if (!akka242NewArtifacts.contains(projectName)) akka24NoStreamVersions
|
|
|
|
|
else Seq.empty
|
2017-10-30 03:13:14 +02:00
|
|
|
} ++ akka24StreamVersions ++ akka24WithScala212 ++ akka25Versions
|
2017-05-22 16:51:29 +02:00
|
|
|
|
2017-10-06 10:30:28 +02:00
|
|
|
case "2.12" ⇒
|
2018-12-05 13:01:24 +00:00
|
|
|
if (akka2519NewArtifacts.contains(projectName))
|
|
|
|
|
akka25DiscoveryVersions
|
|
|
|
|
else if (akka250NewArtifacts.contains(projectName))
|
2018-04-24 22:58:54 +09:00
|
|
|
akka25Versions
|
|
|
|
|
else
|
|
|
|
|
akka24WithScala212 ++ akka25Versions
|
|
|
|
|
|
2017-09-12 10:48:15 +02:00
|
|
|
|
2017-10-30 11:00:52 -07:00
|
|
|
case v if v.startsWith("2.13") =>
|
2017-09-12 10:48:15 +02:00
|
|
|
// no Akka released for 2.13 yet, no jars to check BC against
|
2017-10-06 10:30:28 +02:00
|
|
|
Seq.empty
|
2016-03-10 10:45:35 +02:00
|
|
|
}
|
|
|
|
|
}
|
2017-05-22 16:51:29 +02:00
|
|
|
|
2017-01-24 11:27:24 +01:00
|
|
|
val akka25PromotedArtifacts = Set(
|
2017-10-06 10:30:28 +02:00
|
|
|
"akka-distributed-data")
|
2016-03-10 10:45:35 +02:00
|
|
|
|
|
|
|
|
// check against all binary compatible artifacts
|
2017-10-06 10:30:28 +02:00
|
|
|
versions.map { v ⇒
|
2017-01-24 11:27:24 +01:00
|
|
|
val adjustedProjectName =
|
|
|
|
|
if (akka25PromotedArtifacts(projectName) && v.startsWith("2.4"))
|
|
|
|
|
projectName + "-experimental"
|
2017-05-22 16:51:29 +02:00
|
|
|
else
|
2017-01-24 11:27:24 +01:00
|
|
|
projectName
|
|
|
|
|
organization %% adjustedProjectName % v
|
|
|
|
|
}.toSet
|
2016-03-10 10:45:35 +02:00
|
|
|
}
|
2015-01-22 20:26:34 +02:00
|
|
|
}
|