From d7a8e0413e069836847326873888201a384cda79 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Sat, 12 Aug 2017 16:17:13 -0700 Subject: Workaround ignored runtime dependency bug --- .../sbt/jni/plugins/RunDependencyFixPlugin.scala | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/RunDependencyFixPlugin.scala (limited to 'plugin/src/main/scala') diff --git a/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/RunDependencyFixPlugin.scala b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/RunDependencyFixPlugin.scala new file mode 100644 index 0000000..921caac --- /dev/null +++ b/plugin/src/main/scala/ch/jodersky/sbt/jni/plugins/RunDependencyFixPlugin.scala @@ -0,0 +1,43 @@ +package ch.jodersky.sbt.jni.plugins + +import sbt._ +import sbt.Keys._ +import java.io.File + +/** Adds an extension method `dependsOnRun` to projects, to work around an sbt + * bug https://github.com/sbt/sbt/issues/3425 */ +object RunDependencyFixPlugin extends AutoPlugin { + + override def requires = plugins.CorePlugin + override def trigger = allRequirements + + object autoImport { + + val runClasspath = taskKey[Seq[sbt.internal.util.Attributed[File]]]("Classpath used in run task") + + def dependsOnRunSettings(project: Project) = Seq( + runClasspath in Compile ++= (runClasspath in Compile in project).value, + run := { + Defaults.runTask( + runClasspath in Compile, + mainClass in Compile in run, + runner in run + ).evaluated + } + ) + + implicit class RichProject(project: Project) { + @deprecated("Temporary fix for https://github.com/sbt/sbt/issues/3425", "1.3.0") + def dependsOnRun(other: Project) = { + project.settings(dependsOnRunSettings(other): _*) + } + } + + } + import autoImport._ + + override def projectSettings = Seq( + runClasspath in Compile := (fullClasspath in Compile).value + ) + +} -- cgit v1.2.3