diff --git a/plugin/src/main/scala-2.10/coursier/CoursierPlugin.scala b/plugin/src/main/scala-2.10/coursier/CoursierPlugin.scala index 745848d75..1b5f320cc 100644 --- a/plugin/src/main/scala-2.10/coursier/CoursierPlugin.scala +++ b/plugin/src/main/scala-2.10/coursier/CoursierPlugin.scala @@ -18,6 +18,7 @@ object CoursierPlugin extends AutoPlugin { val coursierCachePolicies = Keys.coursierCachePolicies val coursierTtl = Keys.coursierTtl val coursierVerbosity = Keys.coursierVerbosity + val mavenProfiles = Keys.mavenProfiles val coursierSourceRepositories = Keys.coursierSourceRepositories val coursierResolvers = Keys.coursierResolvers val coursierSbtResolvers = Keys.coursierSbtResolvers @@ -64,6 +65,7 @@ object CoursierPlugin extends AutoPlugin { coursierCachePolicies := CachePolicy.default, coursierTtl := Cache.defaultTtl, coursierVerbosity := Settings.defaultVerbosityLevel, + mavenProfiles := Set.empty, coursierSourceRepositories := Nil, coursierResolvers <<= Tasks.coursierResolversTask, coursierSbtResolvers <<= externalResolvers in updateSbtClassifiers, diff --git a/plugin/src/main/scala-2.10/coursier/Keys.scala b/plugin/src/main/scala-2.10/coursier/Keys.scala index 49d89be75..bb9b267d0 100644 --- a/plugin/src/main/scala-2.10/coursier/Keys.scala +++ b/plugin/src/main/scala-2.10/coursier/Keys.scala @@ -20,6 +20,8 @@ object Keys { val coursierVerbosity = SettingKey[Int]("coursier-verbosity") + val mavenProfiles = SettingKey[Set[String]]("maven-profiles") + val coursierSourceRepositories = SettingKey[Seq[File]]("coursier-source-repositories") val coursierResolvers = TaskKey[Seq[Resolver]]("coursier-resolvers") val coursierSbtResolvers = TaskKey[Seq[Resolver]]("coursier-sbt-resolvers") diff --git a/plugin/src/main/scala-2.10/coursier/Tasks.scala b/plugin/src/main/scala-2.10/coursier/Tasks.scala index d563814fd..ac5cf7627 100644 --- a/plugin/src/main/scala-2.10/coursier/Tasks.scala +++ b/plugin/src/main/scala-2.10/coursier/Tasks.scala @@ -374,6 +374,7 @@ object Tasks { val verbosityLevel = coursierVerbosity.value + val userEnabledProfiles = mavenProfiles.value val startRes = Resolution( currentProject.dependencies.map { @@ -381,6 +382,7 @@ object Tasks { dep.copy(exclusions = dep.exclusions ++ exclusions) }.toSet, filter = Some(dep => !dep.optional), + profileActivation = Some(core.Resolution.userProfileActivation(userEnabledProfiles)), forceVersions = // order matters here userForceVersions ++ diff --git a/plugin/src/sbt-test/sbt-coursier/profiles/build.sbt b/plugin/src/sbt-test/sbt-coursier/profiles/build.sbt new file mode 100644 index 000000000..b0209d82c --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/profiles/build.sbt @@ -0,0 +1,12 @@ +scalaVersion := "2.11.8" + +libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.6.2" + +mavenProfiles += "hadoop-2.6" + +coursierCachePolicies := { + if (sys.props("os.name").startsWith("Windows")) + coursierCachePolicies.value + else + Seq(coursier.CachePolicy.ForceDownload) +} diff --git a/plugin/src/sbt-test/sbt-coursier/profiles/output b/plugin/src/sbt-test/sbt-coursier/profiles/output new file mode 100644 index 000000000..a0aba9318 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/profiles/output @@ -0,0 +1 @@ +OK \ No newline at end of file diff --git a/plugin/src/sbt-test/sbt-coursier/profiles/project/plugins.sbt b/plugin/src/sbt-test/sbt-coursier/profiles/project/plugins.sbt new file mode 100644 index 000000000..152225a9e --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/profiles/project/plugins.sbt @@ -0,0 +1,11 @@ +{ + val pluginVersion = sys.props.getOrElse( + "plugin.version", + throw new RuntimeException( + """|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin + ) + ) + + addSbtPlugin("io.get-coursier" % "sbt-coursier" % pluginVersion) +} diff --git a/plugin/src/sbt-test/sbt-coursier/profiles/src/main/scala/Main.scala b/plugin/src/sbt-test/sbt-coursier/profiles/src/main/scala/Main.scala new file mode 100644 index 000000000..9ac86fe34 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/profiles/src/main/scala/Main.scala @@ -0,0 +1,19 @@ +import java.io.File +import java.nio.file.Files + +object Main extends App { + val p = new java.util.Properties + p.load( + Thread.currentThread() + .getContextClassLoader + .getResource("common-version-info.properties") + .openStream() + ) + + val hadoopVersion = p.getProperty("version") + Console.err.println(s"Found hadoop version $hadoopVersion") + + assert(hadoopVersion == "2.6.0") + + Files.write(new File("output").toPath, "OK".getBytes("UTF-8")) +} diff --git a/plugin/src/sbt-test/sbt-coursier/profiles/test b/plugin/src/sbt-test/sbt-coursier/profiles/test new file mode 100644 index 000000000..2182f57b0 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/profiles/test @@ -0,0 +1,3 @@ +$ delete output +> run +$ exists output