diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt new file mode 100644 index 000000000..f1c683ad9 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/cache.sbt @@ -0,0 +1,10 @@ +ivyPaths in ThisBuild := { + val base = (baseDirectory in ThisBuild).value + new IvyPaths(base, Some(base / "ivy-cache")) +} + +managedScalaInstance in ThisBuild := false + +autoScalaLibrary in ThisBuild := false + +crossPaths in ThisBuild := false \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala new file mode 100644 index 000000000..d9aec4fe0 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Build.scala @@ -0,0 +1,15 @@ +import sbt._ +import Keys._ + +object B extends Build { + + override def settings = super.settings ++ Seq( + organization := "org.example", + version := "2.0" + ) + + lazy val root = proj("root", ".") aggregate(a,b) + lazy val a = proj("a", "a") dependsOn(b) + lazy val b = proj("b", "b") + private[this] def proj(id: String, f: String): Project = Project(id, file(f)).settings( ivyPaths <<= ivyPaths in ThisBuild ) +} diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Def.java b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Def.java new file mode 100644 index 000000000..dcabe1e58 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/def/Def.java @@ -0,0 +1,4 @@ +public final class Def { + public static final int x = 3; +} + diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/Use.java b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/Use.java new file mode 100644 index 000000000..0c2746e2d --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/Use.java @@ -0,0 +1,3 @@ +public final class Use { + public static final int x = Def.x; +} diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/Use.scala b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/Use.scala new file mode 100644 index 000000000..5db377100 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/Use.scala @@ -0,0 +1,3 @@ +object Use { + val x = Def.x +} diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt new file mode 100644 index 000000000..b458ab994 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/changes/use/build.sbt @@ -0,0 +1,9 @@ +name := "use" + +organization := "org.example" + +version := "1.0" + +libraryDependencies += "org.example" % "b" % "2.0" + +ivyPaths <<= ivyPaths in ThisBuild \ No newline at end of file diff --git a/sbt/src/sbt-test/dependency-management/cache-resolver/test b/sbt/src/sbt-test/dependency-management/cache-resolver/test new file mode 100644 index 000000000..ca3066023 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cache-resolver/test @@ -0,0 +1,42 @@ +# Publish the def/{a,b} projects to the local repository + +$ copy-file changes/def/Build.scala project/Build.scala +$ copy-file changes/def/Def.java b/Def.java +> reload +> publish-local +> clean + + +# Resolve the projects from the local repository +# The resolver will be marked as local in the cache +# The dependency on def/b will be properly resolved + +$ delete project/Build.scala +$ delete b/Def.java +$ copy-file changes/use/build.sbt build.sbt +$ copy-file changes/use/Use.java Use.java +> reload +> compile +> clean + + +# Publish the def/{a,b} projects to the local repository again +# This will change the resolver in the cache to be inter-project + +$ copy-file changes/def/Build.scala project/Build.scala +$ copy-file changes/def/Def.java b/Def.java +> reload +> publish-local +> clean + + +# Resolve from local again. This will succeed, but the jars +# won't be on the classpath if the resolver isn't ignoredy. + +$ delete project/Build.scala +$ delete b/Def.java +$ copy-file changes/use/build.sbt build.sbt +$ copy-file changes/use/Use.java Use.java +> reload +> compile +