add a simpler version of snapshot-resolution

Ivy is able to check for SNAPSHOT across different resolvers.
Coursier seems to be sticky about the resolver within the TTL (24h).
This commit is contained in:
Eugene Yokota 2019-04-20 02:31:44 -04:00
parent ca53934941
commit 464325ad1d
7 changed files with 71 additions and 0 deletions

View File

@ -0,0 +1,38 @@
ThisBuild / organization := "com.example"
ThisBuild / scalaVersion := "2.12.8"
def customIvyPaths: Seq[Def.Setting[_]] = Seq(
ivyPaths := IvyPaths((baseDirectory in ThisBuild).value, Some((baseDirectory in ThisBuild).value / "ivy-cache"))
)
lazy val sharedResolver: Resolver = {
val r = Resolver.defaultShared
r withConfiguration (r.configuration withIsLocal false)
//MavenRepository("example-shared-repo", "file:///tmp/shared-maven-repo-bad-example")
//Resolver.file("example-shared-repo", repoDir)(Resolver.defaultPatterns)
}
lazy val common = project
.settings(customIvyPaths)
.settings(
organization := "com.badexample",
name := "badexample",
version := "1.0-SNAPSHOT",
publishTo := Some(sharedResolver),
crossVersion := Disabled(),
publishMavenStyle := (sharedResolver match {
case repo: PatternsBasedRepository => repo.patterns.isMavenCompatible
case _: RawRepository => false // TODO - look deeper
case _: MavenRepository => true
case _ => false // TODO - Handle chain repository?
})
)
lazy val dependent = project
.settings(customIvyPaths)
.settings(
// Ignore the inter-project resolver, so we force to look remotely.
resolvers += sharedResolver,
fullResolvers := fullResolvers.value.filterNot(_==projectResolver.value),
libraryDependencies += "com.badexample" % "badexample" % "1.0-SNAPSHOT"
)

View File

@ -0,0 +1,2 @@
object Common {
}

View File

@ -0,0 +1,3 @@
object Common {
def name = "common"
}

View File

@ -0,0 +1,3 @@
object Common {
}

View File

@ -0,0 +1,3 @@
object User {
println(Common.name)
}

View File

@ -0,0 +1,21 @@
# Ivy is able to check for SNAPSHOT across different resolvers
# Coursier seems to be sticky about the resolver within the TTL
> show dependent/fullResolvers
# Validate that a bad dependency fails the compile
$ copy-file changes/BadCommon.scala common/src/main/scala/Common.scala
> common/publishLocal
# Force dep resolution to be successful, then compilation to fail
> dependent/update
-> dependent/compile
# Push new good change to the same repository.
$ copy-file changes/GoodCommon.scala common/src/main/scala/Common.scala
$ sleep 1000
> common/publishLocal
# This should compile now because Coursier checks for local update
> show dependent/update
> dependent/compile

View File

@ -212,6 +212,7 @@ final class ScriptedTests(
case "dependency-management/pom-parent-pom" => LauncherBased // tbd
case "dependency-management/publish-to-maven-local-file" => LauncherBased // sbt/Package$
case "dependency-management/snapshot-resolution" => LauncherBased // tbd
case "dependency-management/snapshot-local" => LauncherBased // tbd
case "dependency-management/test-artifact" => LauncherBased // sbt/Package$
case "dependency-management/transitive-version-range" => LauncherBased // tbd
case "dependency-management/update-sbt-classifiers" => LauncherBased // tbd