diff --git a/src/main/kotlin/com/beust/kobalt/app/BuildScriptUtil.kt b/src/main/kotlin/com/beust/kobalt/app/BuildScriptUtil.kt index 6f21bb3b..1d5f407d 100644 --- a/src/main/kotlin/com/beust/kobalt/app/BuildScriptUtil.kt +++ b/src/main/kotlin/com/beust/kobalt/app/BuildScriptUtil.kt @@ -36,8 +36,8 @@ class BuildScriptUtil @Inject constructor(val plugins: Plugins, val files: KFile fun runBuildScriptJarFile(buildScriptJarFile: File, urls: List, context: KobaltContext) : List { var stream : InputStream? = null - val allUrls = (urls + arrayOf( - buildScriptJarFile.toURI().toURL()) + File(files.kobaltJar).toURI().toURL()) + val allUrls = (urls + arrayOf(buildScriptJarFile.toURI().toURL()) + + files.kobaltJar.map {File(it).toURI().toURL() }) .toTypedArray() val classLoader = URLClassLoader(allUrls) diff --git a/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt b/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt index 49376fdd..419487bd 100644 --- a/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt +++ b/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt @@ -15,22 +15,27 @@ import kotlin.io.FileSystemException import kotlin.io.NoSuchFileException class KFiles { - val kobaltJar : String + /** + * This actually returns a list of strings because in development mode, we are not pointing to a single + * jar file but to a set of /classes directories. + */ + val kobaltJar : List get() { val envJar = System.getenv("KOBALT_JAR") if (envJar != null) { debug("Using kobalt jar $envJar") - return File(envJar).absolutePath + return listOf(File(envJar).absolutePath) } else { val jar = joinDir(distributionsDir, Kobalt.version, "kobalt/wrapper/kobalt-" + Kobalt.version + ".jar") val jarFile = File(jar) if (jarFile.exists()) { - return jarFile.absolutePath + return listOf(jarFile.absolutePath) } else { // Will only happen when building kobalt itself: the jar file might not be in the dist/ directory // yet since we're currently building it. Instead, use the classes directly debug("Couldn't find ${jarFile.absolutePath}, using build/classes/main") - return File(homeDir("kotlin", "kobalt", "build", "classes", "main")).absolutePath + return listOf(File(homeDir("kotlin", "kobalt", "build", "classes", "main")).absolutePath, + File(homeDir("kotlin", "kobalt", "classes", "production", "kobalt-plugin-api")).absolutePath) } } }