From 974dee8cf45f5a6cec08d00618f37bc83413eb4c Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 21 Sep 2016 10:41:18 +0200 Subject: [PATCH] Allow to manually add things in the classpath of launched apps --- cli/src/main/scala-2.11/coursier/cli/Helper.scala | 3 ++- cli/src/main/scala-2.11/coursier/cli/Launch.scala | 15 ++++++++++++++- .../main/scala-2.11/coursier/cli/Options.scala | 3 +++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cli/src/main/scala-2.11/coursier/cli/Helper.scala b/cli/src/main/scala-2.11/coursier/cli/Helper.scala index 461b8eef8..24b8cfc56 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Helper.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Helper.scala @@ -75,6 +75,7 @@ object Util { class Helper( common: CommonOptions, rawDependencies: Seq[String], + extraJars: Seq[File] = Nil, printResultStdout: Boolean = false, ignoreErrors: Boolean = false, isolated: IsolatedLoaderOptions = IsolatedLoaderOptions(), @@ -648,7 +649,7 @@ class Helper( } lazy val loader = new URLClassLoader( - filteredFiles.map(_.toURI.toURL).toArray, + (filteredFiles ++ extraJars).map(_.toURI.toURL).toArray, parentLoader ) diff --git a/cli/src/main/scala-2.11/coursier/cli/Launch.scala b/cli/src/main/scala-2.11/coursier/cli/Launch.scala index b7cc971e4..aa0ac1648 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Launch.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Launch.scala @@ -1,6 +1,7 @@ package coursier package cli +import java.io.File import java.net.{ URL, URLClassLoader } import caseapp._ @@ -114,6 +115,7 @@ case class Launch( val helper = new Helper( options.common, remainingArgs ++ options.isolated.rawIsolated.map { case (_, dep) => dep }, + extraJars = options.extraJars.map(new File(_)), isolated = options.isolated ) @@ -123,8 +125,19 @@ case class Launch( else options.mainClass + val extraJars = options.extraJars.filter(_.nonEmpty) + + val loader = + if (extraJars.isEmpty) + helper.loader + else + new URLClassLoader( + extraJars.map(new File(_).toURI.toURL).toArray, + helper.loader + ) + Launch.run( - helper.loader, + loader, mainClass, userArgs, options.common.verbosityLevel diff --git a/cli/src/main/scala-2.11/coursier/cli/Options.scala b/cli/src/main/scala-2.11/coursier/cli/Options.scala index 7359826f3..c89fa30b3 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Options.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Options.scala @@ -188,6 +188,9 @@ case class LaunchOptions( @Short("M") @Short("main") mainClass: String, + @Short("J") + @Help("Extra JARs to be added to the classpath of the launched application. Directories accepted too.") + extraJars: List[String], @Recurse isolated: IsolatedLoaderOptions, @Recurse