diff --git a/buildSrc/src/main/kotlin/SmartJavaExec.kt b/buildSrc/src/main/kotlin/SmartJavaExec.kt index 1264299ef4f..6f48380ad5c 100644 --- a/buildSrc/src/main/kotlin/SmartJavaExec.kt +++ b/buildSrc/src/main/kotlin/SmartJavaExec.kt @@ -8,9 +8,13 @@ import org.gradle.kotlin.dsl.task * that can be found in the license/LICENSE.txt file. */ -fun Project.smartJavaExec(configure: JavaExec.() -> Unit) = task javaExec@{ +fun Project.smartJavaExec(configure: JavaExec.() -> Unit) = task { configure() + passClasspathInJar() +} +// Moves the classpath into a jar metadata, to shorten the command line length and to avoid hitting the limit on Windows +fun JavaExec.passClasspathInJar() { val jarTask = project.task("${name}WriteClassPath", Jar::class) { val classpath = classpath val main = main @@ -28,12 +32,10 @@ fun Project.smartJavaExec(configure: JavaExec.() -> Unit) = task javaE ) } } - archiveName = "$main.${this@javaExec.name}.classpath.container.$extension" + archiveName = "$main.${this@passClasspathInJar.name}.classpath.container.$extension" destinationDir = temporaryDir } - - dependsOn(jarTask) doFirst { @@ -43,6 +45,5 @@ fun Project.smartJavaExec(configure: JavaExec.() -> Unit) = task javaE val copyArgs = args.orEmpty().toList() args(jarTask.outputs.files.singleFile) args(copyArgs) - } } diff --git a/compiler/ir/serialization.js/build.gradle.kts b/compiler/ir/serialization.js/build.gradle.kts index 0b65c92f8d1..b6201f7a715 100644 --- a/compiler/ir/serialization.js/build.gradle.kts +++ b/compiler/ir/serialization.js/build.gradle.kts @@ -21,7 +21,7 @@ sourceSets { "test" { projectDefault() } } -val generateIrRuntimeKlib by smartJavaExec { +val generateIrRuntimeKlib by task { val inDirs = arrayOf(fileFrom(rootDir, "core", "builtins", "src"), fileFrom(rootDir, "core", "builtins", "native"), fileFrom(rootDir, "libraries", "stdlib", "common", "src"), @@ -38,6 +38,8 @@ val generateIrRuntimeKlib by smartJavaExec { classpath = sourceSets.test.get().runtimeClasspath main = "org.jetbrains.kotlin.ir.backend.js.GenerateIrRuntimeKt" workingDir = rootDir + + passClasspathInJar() } testsJar {} \ No newline at end of file