4
/** Reflection helper that runs ScalaTool.
5
* TODO - When SBT is on 2.10.x try to use Dynamic + Reflection. COULD BE FUN.
7
class ScalaToolRunner(classpath: Classpath) {
8
// TODO - Don't use the ant task directly...
9
lazy val classLoader = new java.net.URLClassLoader(classpath.map(_.data.toURI.toURL).toArray, null)
10
lazy val mainClass = classLoader.loadClass("scala.tools.ant.ScalaTool")
11
lazy val executeMethod = mainClass.getMethod("execute")
12
lazy val setFileMethod = mainClass.getMethod("setFile", classOf[java.io.File])
13
lazy val setClassMethod = mainClass.getMethod("setClass", classOf[String])
14
lazy val setClasspathMethod = mainClass.getMethod("setClassPath", classOf[String])
15
lazy val instance = mainClass.newInstance()
17
def setClass(cls: String): Unit = setClassMethod.invoke(instance, cls)
18
def setFile(file: File): Unit = setFileMethod.invoke(instance, file)
19
def setClasspath(cp: String): Unit = setClasspathMethod.invoke(instance, cp)
20
def execute(): Unit = executeMethod.invoke(instance)