diff --git a/build.sbt b/build.sbt index a7d28fc97..7c3e032e9 100644 --- a/build.sbt +++ b/build.sbt @@ -1,5 +1,11 @@ import java.io.FileOutputStream +import com.typesafe.tools.mima.plugin.MimaPlugin.mimaDefaultSettings +import com.typesafe.tools.mima.plugin.MimaKeys +import MimaKeys.{ previousArtifacts, binaryIssueFilters } + +val binaryCompatibilityVersion = "1.0.0-M7" + lazy val releaseSettings = Seq( publishMavenStyle := true, licenses := Seq("Apache 2.0" -> url("http://opensource.org/licenses/Apache-2.0")), @@ -110,6 +116,7 @@ lazy val commonSettings = baseCommonSettings ++ Seq( lazy val core = crossProject .settings(commonSettings: _*) + .settings(mimaDefaultSettings: _*) .settings( name := "coursier", resourceGenerators.in(Compile) += { @@ -132,6 +139,13 @@ lazy val core = crossProject Seq(f) }.taskValue + }, + previousArtifacts := Set(organization.value %% moduleName.value % binaryCompatibilityVersion), + binaryIssueFilters ++= { + import com.typesafe.tools.mima.core._ + import com.typesafe.tools.mima.core.ProblemFilters._ + + Seq() } ) .jvmSettings( @@ -189,12 +203,26 @@ lazy val testsJs = tests.js.dependsOn(`fetch-js` % "test") lazy val cache = project .dependsOn(coreJvm) .settings(commonSettings) + .settings(mimaDefaultSettings) .settings( name := "coursier-cache", libraryDependencies ++= Seq( "org.scalaz" %% "scalaz-concurrent" % "7.1.2", "com.lihaoyi" %% "ammonite-terminal" % "0.5.0" - ) + ), + previousArtifacts := Set(organization.value %% moduleName.value % binaryCompatibilityVersion), + binaryIssueFilters ++= { + import com.typesafe.tools.mima.core._ + import com.typesafe.tools.mima.core.ProblemFilters._ + + Seq( + ProblemFilters.exclude[MissingTypesProblem]("coursier.TermDisplay$Info$"), + ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.apply"), + ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.copy"), + ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.pct"), + ProblemFilters.exclude[MissingMethodProblem]("coursier.TermDisplay#Info.this") + ) + } ) lazy val bootstrap = project diff --git a/project/plugins.sbt b/project/plugins.sbt index 3e1a804b9..08f06411f 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,3 +5,4 @@ addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.1.0") addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.4.0") addSbtPlugin("com.github.alexarchambault" % "coursier-sbt-plugin" % "1.0.0-M4") addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.8") diff --git a/project/travis.sh b/project/travis.sh index 3a67402b0..7e81bd8b2 100755 --- a/project/travis.sh +++ b/project/travis.sh @@ -32,7 +32,7 @@ function isMasterOrDevelop() { # TODO Add coverage once https://github.com/scoverage/sbt-scoverage/issues/111 is fixed -SBT_COMMANDS="compile test" +SBT_COMMANDS="compile test coreJVM/mimaReportBinaryIssues cache/mimaReportBinaryIssues" if isNotPr && publish && isMaster; then SBT_COMMANDS="$SBT_COMMANDS publish" fi