diff --git a/appveyor.yml b/appveyor.yml index fb34102c9..2fc47eaf1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,8 +33,8 @@ test_script: - sbt ++2.12.1 testsJVM/test testsJVM/it:test # Would node be around for testsJS/test? - sbt ++2.11.11 testsJVM/test testsJVM/it:test - sbt ++2.10.6 testsJVM/test testsJVM/it:test - - sbt ++2.12.1 sbt-coursier/scripted sbt-coursier/publishLocal sbt-shading/scripted # for sbt 1.0 - - sbt ++2.10.6 sbt-coursier/scripted sbt-coursier/publishLocal sbt-shading/scripted # for sbt 0.13 + - sbt ++2.12.1 "sbt-coursier/scripted sbt-coursier/*" sbt-coursier/publishLocal "sbt-shading/scripted sbt-shading/*" # for sbt 1.0 + - sbt ++2.10.6 "sbt-coursier/scripted sbt-coursier/*" "sbt-coursier/scripted sbt-coursier-0.13/*" sbt-coursier/publishLocal "sbt-shading/scripted sbt-shading/*" "sbt-shading/scripted sbt-shading-0.13/*" # for sbt 0.13 cache: - C:\Users\appveyor\.ivy2\cache - C:\Users\appveyor\.m2 diff --git a/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala b/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala index 9e3396d7f..ee1a20da1 100644 --- a/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala +++ b/sbt-coursier/src/main/scala/coursier/CoursierPlugin.scala @@ -3,6 +3,8 @@ package coursier import sbt._ import sbt.Keys._ +import SbtCompatibility._ + object CoursierPlugin extends AutoPlugin { override def trigger = allRequirements @@ -123,7 +125,28 @@ object CoursierPlugin extends AutoPlugin { coursierResolution := Tasks.resolutionTask().value, coursierSbtClassifiersResolution := Tasks.resolutionTask( sbtClassifiers = true - ).value + ).value, + ivyConfigurations := { + val confs = ivyConfigurations.value + val names = confs.map(_.name).toSet + + // Yes, adding those back in sbt 1.0. Can't distinguish between config test (whose jars with classifier tests ought to + // be added), and sources / docs else (if their JARs are in compile, they would get added too then). + + val extraSources = + if (names("sources")) + None + else + Some(Configuration("sources", "", isPublic = true, extendsConfigs = Vector.empty, transitive = false)) + + val extraDocs = + if (names("docs")) + None + else + Some(Configuration("docs", "", isPublic = true, extendsConfigs = Vector.empty, transitive = false)) + + confs ++ extraSources.toSeq ++ extraDocs.toSeq + } ) override lazy val projectSettings = coursierSettings(None, Seq(Compile, Test).map(c => c -> c.name)) ++ diff --git a/sbt-coursier/src/main/scala/coursier/Tasks.scala b/sbt-coursier/src/main/scala/coursier/Tasks.scala index f037896dd..d6db4d8c2 100644 --- a/sbt-coursier/src/main/scala/coursier/Tasks.scala +++ b/sbt-coursier/src/main/scala/coursier/Tasks.scala @@ -146,9 +146,7 @@ object Tasks { allDependencies <- allDependenciesTask } yield { - val configMap = configurations - .map { cfg => cfg.name -> cfg.extendsConfigs.map(_.name) } - .toMap + val configMap = configurations.map(cfg => cfg.name -> cfg.extendsConfigs.map(_.name)).toMap val proj = FromSbt.project( projId, @@ -190,6 +188,18 @@ object Tasks { val sbv = sbt.Keys.scalaBinaryVersion.value val ivyConfs = sbt.Keys.ivyConfigurations.value + val sourcesConfigOpt = + if (ivyConfigurations.value.exists(_.name == "sources")) + Some("sources") + else + None + + val docsConfigOpt = + if (ivyConfigurations.value.exists(_.name == "docs")) + Some("docs") + else + None + val sbtBinArtifacts = for ((config, targetConfig) <- configsMap) yield { @@ -211,7 +221,7 @@ object Tasks { } val sbtSourceArtifacts = - for ((config, _) <- configsMap) yield { + for ((config, targetConfig) <- configsMap) yield { val publish = publishArtifact .in(projectRef) @@ -225,13 +235,13 @@ object Tasks { .in(packageSrc) .in(config) .find(state) - .map("sources" -> _) + .map(sourcesConfigOpt.getOrElse(targetConfig) -> _) else None } val sbtDocArtifacts = - for ((config, _) <- configsMap) yield { + for ((config, targetConfig) <- configsMap) yield { val publish = publishArtifact .in(projectRef) @@ -245,7 +255,7 @@ object Tasks { .in(packageDoc) .in(config) .find(state) - .map("docs" -> _) + .map(docsConfigOpt.getOrElse(targetConfig) -> _) else None } diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/unidoc/build.sbt b/sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/build.sbt similarity index 100% rename from sbt-coursier/src/sbt-test/sbt-coursier/unidoc/build.sbt rename to sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/build.sbt diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/unidoc/project/plugins.sbt b/sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/project/plugins.sbt similarity index 100% rename from sbt-coursier/src/sbt-test/sbt-coursier/unidoc/project/plugins.sbt rename to sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/project/plugins.sbt diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/unidoc/src/main/scala/Foo.scala b/sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/src/main/scala/Foo.scala similarity index 100% rename from sbt-coursier/src/sbt-test/sbt-coursier/unidoc/src/main/scala/Foo.scala rename to sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/src/main/scala/Foo.scala diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/unidoc/test b/sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/test similarity index 100% rename from sbt-coursier/src/sbt-test/sbt-coursier/unidoc/test rename to sbt-coursier/src/sbt-test/sbt-coursier-0.13/unidoc/test diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/build.sbt b/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/build.sbt index 471a4db63..6c0d86ed7 100644 --- a/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/build.sbt +++ b/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/build.sbt @@ -1,3 +1,7 @@ + +// for SbtExclusionRule with sbt 1.0 +import sbt.internal.librarymanagement._ + scalaVersion := "2.11.8" organization := "io.get-coursier.test" diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/project/Dummy.scala b/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/project/Dummy.scala new file mode 100644 index 000000000..1595e3687 --- /dev/null +++ b/sbt-coursier/src/sbt-test/sbt-coursier/exclude-dependencies/project/Dummy.scala @@ -0,0 +1,8 @@ +package sbt.internal.librarymanagement + +// dummy object, to be able to do +// import sbt.internal.librarymanagement._ +// from build.sbt, even in 0.13 +// That import is required in 1.0 for SbtExclusionRule + +object Dummy diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/maven-compatible/build.sbt b/sbt-coursier/src/sbt-test/sbt-coursier/maven-compatible/build.sbt index 7479343f5..f44f79c32 100644 --- a/sbt-coursier/src/sbt-test/sbt-coursier/maven-compatible/build.sbt +++ b/sbt-coursier/src/sbt-test/sbt-coursier/maven-compatible/build.sbt @@ -16,8 +16,10 @@ resolvers += Resolver.url( Patterns( Resolver.ivyStylePatterns.ivyPatterns, Resolver.ivyStylePatterns.artifactPatterns, - isMavenCompatible = true + isMavenCompatible = true, + descriptorOptional = false, + skipConsistencyCheck = false ) ) -libraryDependencies += "org.scalaz.stream" %% "scalaz-stream" % "0.7.1" \ No newline at end of file +libraryDependencies += "org.scalaz.stream" %% "scalaz-stream" % "0.7.1" diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/publish-local-sources-javadoc-conf/build.sbt b/sbt-coursier/src/sbt-test/sbt-coursier/publish-local-sources-javadoc-conf/build.sbt index ad77e0f29..0bae35eb6 100644 --- a/sbt-coursier/src/sbt-test/sbt-coursier/publish-local-sources-javadoc-conf/build.sbt +++ b/sbt-coursier/src/sbt-test/sbt-coursier/publish-local-sources-javadoc-conf/build.sbt @@ -57,10 +57,22 @@ lazy val shared = Seq( val compileDocArtifacts = artifacts("compile", Some("javadoc")) val docArtifacts = artifacts("compile", Some("javadoc"), useClassifiersReport = true) - assert(compileSourceArtifacts.isEmpty) - assert(sourceArtifacts.length == 2) - assert(compileDocArtifacts.isEmpty) - assert(docArtifacts.length == 2) + assert( + compileSourceArtifacts.isEmpty, + "Expected no source artifact in main update report" + ) + assert( + sourceArtifacts.length == 2, + "Expected 2 source artifacts in classifier report" + ) + assert( + compileDocArtifacts.isEmpty, + "Expected no doc artifact in main update report" + ) + assert( + docArtifacts.length == 2, + "Expected 2 doc artifacts in classifier report" + ) } ) diff --git a/sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/build.sbt b/sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/build.sbt similarity index 100% rename from sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/build.sbt rename to sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/build.sbt diff --git a/sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/coursier b/sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/coursier similarity index 100% rename from sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/coursier rename to sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/coursier diff --git a/sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/jvm/src/main/scala/Main.scala b/sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/jvm/src/main/scala/Main.scala similarity index 100% rename from sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/jvm/src/main/scala/Main.scala rename to sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/jvm/src/main/scala/Main.scala diff --git a/sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/project/plugins.sbt b/sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/project/plugins.sbt similarity index 100% rename from sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/project/plugins.sbt rename to sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/project/plugins.sbt diff --git a/sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/shared/src/main/scala/Foo.scala b/sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/shared/src/main/scala/Foo.scala similarity index 100% rename from sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/shared/src/main/scala/Foo.scala rename to sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/shared/src/main/scala/Foo.scala diff --git a/sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/test b/sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/test similarity index 100% rename from sbt-shading/src/sbt-test/sbt-shading/cross-project-shading/test rename to sbt-shading/src/sbt-test/sbt-shading-0.13/cross-project-shading/test diff --git a/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/build.sbt b/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/build.sbt index 091b971ab..2a1f71f12 100644 --- a/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/build.sbt +++ b/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/build.sbt @@ -1,4 +1,7 @@ +// for SbtExclusionRule with sbt 1.0 +import sbt.internal.librarymanagement._ + enablePlugins(coursier.ShadingPlugin) shadingNamespace := "test.shaded" shadeNamespaces += "argonaut" diff --git a/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/project/Dummy.scala b/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/project/Dummy.scala new file mode 100644 index 000000000..1595e3687 --- /dev/null +++ b/sbt-shading/src/sbt-test/sbt-shading/exclude-dependencies/project/Dummy.scala @@ -0,0 +1,8 @@ +package sbt.internal.librarymanagement + +// dummy object, to be able to do +// import sbt.internal.librarymanagement._ +// from build.sbt, even in 0.13 +// That import is required in 1.0 for SbtExclusionRule + +object Dummy diff --git a/scripts/travis.sh b/scripts/travis.sh index 4a499f9fe..0917c2de7 100755 --- a/scripts/travis.sh +++ b/scripts/travis.sh @@ -67,11 +67,17 @@ is212() { } runSbtCoursierTests() { - sbt ++$SCALA_VERSION coreJVM/publishLocal cache/publishLocal sbt-coursier/scripted + sbt ++$SCALA_VERSION coreJVM/publishLocal cache/publishLocal "sbt-coursier/scripted sbt-coursier/*" + if [ "$SCALA_VERSION" = "2.10" ]; then + sbt ++$SCALA_VERSION "sbt-coursier/scripted sbt-coursier-0.13/*" + fi } runSbtShadingTests() { - sbt ++$SCALA_VERSION sbt-coursier/publishLocal sbt-shading/scripted + sbt ++$SCALA_VERSION coreJVM/publishLocal cache/publishLocal sbt-coursier/publishLocal "sbt-shading/scripted sbt-shading/*" + if [ "$SCALA_VERSION" = "2.10" ]; then + sbt ++$SCALA_VERSION "sbt-shading/scripted sbt-shading-0.13/*" + fi } jsCompile() {