From 8d568af4d96939d2724e7a8c6c02826349d266cb Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 16 Jan 2019 17:03:17 +0100 Subject: [PATCH] Automatically add maven-plugin to classpathTypes for sbt plugins (#28) --- .../coursier/sbtcoursier/CoursierPlugin.scala | 8 ++++++-- .../maven-plugin-classpath-type/build.sbt | 18 ++++++++++++++++++ .../project/plugins.sbt | 2 ++ .../project/project/plugins.sbt | 13 +++++++++++++ .../src/main/scala/Main.scala | 6 ++++++ .../shared-2/maven-plugin-classpath-type/test | 5 +++++ .../sbtlmcoursier/LmCoursierPlugin.scala | 10 +++++++--- 7 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/build.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/plugins.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/project/plugins.sbt create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/src/main/scala/Main.scala create mode 100644 modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/test diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala index 527afb9f0..59e556396 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala @@ -44,9 +44,13 @@ object CoursierPlugin extends AutoPlugin { @deprecated("Use sbtCoursierVersion instead", "1.1.0-M9") val coursierVersion = sbtCoursierVersion - val addSbtCoursier = { + val addSbtCoursier: Seq[Def.Setting[_]] = { import sbt._ - addSbtPlugin("io.get-coursier" % "sbt-coursier" % sbtCoursierVersion) + Seq( + addSbtPlugin("io.get-coursier" % "sbt-coursier" % sbtCoursierVersion), + // seems needed for some sbt plugins (https://github.com/coursier/coursier/issues/450) + classpathTypes += "maven-plugin" + ) } } diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/build.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/build.sbt new file mode 100644 index 000000000..e29840e97 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/build.sbt @@ -0,0 +1,18 @@ +scalaVersion := "2.12.8" +enablePlugins(JavaAppPackaging) + +lazy val check = taskKey[Unit]("") + +check := { + val cmd = "target/universal/stage/bin/maven-plugin-classpath-type" + val cmd0 = + if (sys.props("os.name").toLowerCase(java.util.Locale.ROOT).contains("windows")) + cmd + ".bat" + else + cmd + val b = new ProcessBuilder(cmd0) + b.inheritIO() + val p = b.start() + val retCode = p.waitFor() + assert(retCode == 0, s"Command $cmd returned code $retCode") +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/plugins.sbt new file mode 100644 index 000000000..14d251c3e --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/plugins.sbt @@ -0,0 +1,2 @@ +addSbtCoursier +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.3") diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/project/plugins.sbt new file mode 100644 index 000000000..503ac2871 --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/project/project/plugins.sbt @@ -0,0 +1,13 @@ +addSbtPlugin { + + val name = sys.props.getOrElse( + "plugin.name", + sys.error("plugin.name Java property not set") + ) + val version = sys.props.getOrElse( + "plugin.version", + sys.error("plugin.version Java property not set") + ) + + "io.get-coursier" % name % version +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/src/main/scala/Main.scala b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/src/main/scala/Main.scala new file mode 100644 index 000000000..61295349d --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/src/main/scala/Main.scala @@ -0,0 +1,6 @@ +import java.io.File +import java.nio.file.Files + +object Main extends App { + Files.write(new File("output").toPath, "OK".getBytes("UTF-8")) +} diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/test b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/test new file mode 100644 index 000000000..bb563a74f --- /dev/null +++ b/modules/sbt-coursier/src/sbt-test/shared-2/maven-plugin-classpath-type/test @@ -0,0 +1,5 @@ +$ delete output +> stage +> check +$ exists output +$ delete output diff --git a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala index 93b58ea5d..4fba67dba 100644 --- a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala +++ b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala @@ -7,7 +7,7 @@ import coursier.sbtcoursiershared.SbtCoursierShared import sbt.{AutoPlugin, Classpaths, Def, Setting, Task, taskKey} import sbt.Project.inTask import sbt.KeyRanks.DTask -import sbt.Keys.{appConfiguration, autoScalaLibrary, dependencyResolution, excludeDependencies, scalaBinaryVersion, scalaOrganization, scalaVersion, streams, updateClassifiers, updateSbtClassifiers} +import sbt.Keys.{appConfiguration, autoScalaLibrary, classpathTypes, dependencyResolution, excludeDependencies, scalaBinaryVersion, scalaOrganization, scalaVersion, streams, updateClassifiers, updateSbtClassifiers} import sbt.librarymanagement.DependencyResolution object LmCoursierPlugin extends AutoPlugin { @@ -17,9 +17,13 @@ object LmCoursierPlugin extends AutoPlugin { object autoImport { val coursierConfiguration = taskKey[CoursierConfiguration]("General dependency management (Coursier) settings, such as the resolvers and options to use.").withRank(DTask) - val addSbtCoursier = { + val addSbtCoursier: Seq[Def.Setting[_]] = { import sbt._ - addSbtPlugin("io.get-coursier" % "sbt-lm-coursier" % sbtCoursierVersion) + Seq( + addSbtPlugin("io.get-coursier" % "sbt-lm-coursier" % sbtCoursierVersion), + // seems needed for some sbt plugins (https://github.com/coursier/coursier/issues/450) + classpathTypes += "maven-plugin" + ) } }