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
|
get() = extra.takeIf { it.has("javaHome") }?.get("javaHome") as? String
|
||||||
set(v) { extra["javaHome"] = v }
|
set(v) { extra["javaHome"] = v }
|
||||||
|
|
||||||
fun Project.generator(fqName: String) = task<JavaExec> {
|
fun Project.generator(fqName: String) = smartJavaExec {
|
||||||
classpath = the<JavaPluginConvention>().sourceSets["test"].runtimeClasspath
|
classpath = the<JavaPluginConvention>().sourceSets["test"].runtimeClasspath
|
||||||
main = fqName
|
main = fqName
|
||||||
workingDir = rootDir
|
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