Allow to manually add things in the classpath of launched apps

This commit is contained in:
Alexandre Archambault 2016-09-21 10:41:18 +02:00
parent a50cb1bd85
commit 974dee8cf4
No known key found for this signature in database
GPG Key ID: 14640A6839C263A9
3 changed files with 19 additions and 2 deletions

View File

@ -75,6 +75,7 @@ object Util {
class Helper( class Helper(
common: CommonOptions, common: CommonOptions,
rawDependencies: Seq[String], rawDependencies: Seq[String],
extraJars: Seq[File] = Nil,
printResultStdout: Boolean = false, printResultStdout: Boolean = false,
ignoreErrors: Boolean = false, ignoreErrors: Boolean = false,
isolated: IsolatedLoaderOptions = IsolatedLoaderOptions(), isolated: IsolatedLoaderOptions = IsolatedLoaderOptions(),
@ -648,7 +649,7 @@ class Helper(
} }
lazy val loader = new URLClassLoader( lazy val loader = new URLClassLoader(
filteredFiles.map(_.toURI.toURL).toArray, (filteredFiles ++ extraJars).map(_.toURI.toURL).toArray,
parentLoader parentLoader
) )

View File

@ -1,6 +1,7 @@
package coursier package coursier
package cli package cli
import java.io.File
import java.net.{ URL, URLClassLoader } import java.net.{ URL, URLClassLoader }
import caseapp._ import caseapp._
@ -114,6 +115,7 @@ case class Launch(
val helper = new Helper( val helper = new Helper(
options.common, options.common,
remainingArgs ++ options.isolated.rawIsolated.map { case (_, dep) => dep }, remainingArgs ++ options.isolated.rawIsolated.map { case (_, dep) => dep },
extraJars = options.extraJars.map(new File(_)),
isolated = options.isolated isolated = options.isolated
) )
@ -123,8 +125,19 @@ case class Launch(
else else
options.mainClass 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( Launch.run(
helper.loader, loader,
mainClass, mainClass,
userArgs, userArgs,
options.common.verbosityLevel options.common.verbosityLevel

View File

@ -188,6 +188,9 @@ case class LaunchOptions(
@Short("M") @Short("M")
@Short("main") @Short("main")
mainClass: String, mainClass: String,
@Short("J")
@Help("Extra JARs to be added to the classpath of the launched application. Directories accepted too.")
extraJars: List[String],
@Recurse @Recurse
isolated: IsolatedLoaderOptions, isolated: IsolatedLoaderOptions,
@Recurse @Recurse