Resolve problem with too long command line path in Gradle Windows
This commit is contained in:
@@ -52,7 +52,7 @@ var Project.javaHome: String?
|
||||
get() = extra.takeIf { it.has("javaHome") }?.get("javaHome") as? String
|
||||
set(v) { extra["javaHome"] = v }
|
||||
|
||||
fun Project.generator(fqName: String) = task<JavaExec> {
|
||||
fun Project.generator(fqName: String) = smartJavaExec {
|
||||
classpath = the<JavaPluginConvention>().sourceSets["test"].runtimeClasspath
|
||||
main = fqName
|
||||
workingDir = rootDir
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.tasks.JavaExec
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.gradle.kotlin.dsl.task
|
||||
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
fun Project.smartJavaExec(configure: JavaExec.() -> Unit) = task<JavaExec> javaExec@{
|
||||
configure()
|
||||
|
||||
val jarTask = project.task("${name}WriteClassPath", Jar::class) {
|
||||
val classpath = classpath
|
||||
val main = main
|
||||
dependsOn(classpath)
|
||||
inputs.property("main", main)
|
||||
doFirst {
|
||||
val classPathString = classpath.joinToString(" ") { project.file(it).toURI().toString() }
|
||||
manifest {
|
||||
attributes(
|
||||
mapOf(
|
||||
"Class-Path" to classPathString,
|
||||
"Main-Class" to main
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
archiveName = "$main.${this@javaExec.name}.classpath.container.$extension"
|
||||
destinationDir = temporaryDir
|
||||
}
|
||||
|
||||
|
||||
|
||||
dependsOn(jarTask)
|
||||
|
||||
doFirst {
|
||||
main = "-jar"
|
||||
|
||||
classpath = project.files()
|
||||
val copyArgs = mutableListOf<Any?>().also { it.addAll(args) }
|
||||
args(jarTask.outputs.files.singleFile)
|
||||
args(copyArgs)
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user