[Gradle, Native] When running tool in-process, log the actual classpath
When running tool in-process, log the actual classpath extracted from the classloader, not the one that was intended. This helps to detect the cases when these two don't match.
This commit is contained in:
committed by
Space
parent
71af22dba0
commit
1c052ad448
+5
-4
@@ -36,7 +36,7 @@ internal abstract class KotlinToolRunner(
|
||||
open fun checkClasspath(): Unit = check(classpath.isNotEmpty()) { "Classpath of the tool is empty: $displayName" }
|
||||
|
||||
abstract val isolatedClassLoaderCacheKey: Any
|
||||
private fun getIsolatedClassLoader(): ClassLoader = isolatedClassLoadersMap.computeIfAbsent(isolatedClassLoaderCacheKey) {
|
||||
private fun getIsolatedClassLoader(): URLClassLoader = isolatedClassLoadersMap.computeIfAbsent(isolatedClassLoaderCacheKey) {
|
||||
val arrayOfURLs = classpath.map { File(it.absolutePath).toURI().toURL() }.toTypedArray()
|
||||
URLClassLoader(arrayOfURLs, null).apply {
|
||||
setDefaultAssertionStatus(enableAssertions)
|
||||
@@ -112,18 +112,19 @@ internal abstract class KotlinToolRunner(
|
||||
|
||||
private fun runInProcess(args: List<String>) {
|
||||
val transformedArgs = transformArgs(args)
|
||||
val isolatedClassLoader = getIsolatedClassLoader()
|
||||
|
||||
project.logger.info(
|
||||
"""|Run in-process tool "$displayName"
|
||||
|Entry point method = $mainClass.$daemonEntryPoint
|
||||
|Classpath = ${classpath.map { it.absolutePath }.toPrettyString()}
|
||||
|Classpath = ${isolatedClassLoader.urLs.map { it.file }.toPrettyString()}
|
||||
|Arguments = ${args.toPrettyString()}
|
||||
|Transformed arguments = ${if (transformedArgs == args) "same as arguments" else transformedArgs.toPrettyString()}
|
||||
""".trimMargin()
|
||||
)
|
||||
|
||||
try {
|
||||
val mainClass = getIsolatedClassLoader().loadClass(mainClass)
|
||||
val mainClass = isolatedClassLoader.loadClass(mainClass)
|
||||
val entryPoint = mainClass.methods.single { it.name == daemonEntryPoint }
|
||||
|
||||
entryPoint.invoke(null, transformedArgs.toTypedArray())
|
||||
@@ -138,7 +139,7 @@ internal abstract class KotlinToolRunner(
|
||||
private fun Sequence<Pair<String, String>>.escapeQuotesForWindows() =
|
||||
if (HostManager.hostIsMingw) map { (key, value) -> key.escapeQuotes() to value.escapeQuotes() } else this
|
||||
|
||||
private val isolatedClassLoadersMap = ConcurrentHashMap<Any, ClassLoader>()
|
||||
private val isolatedClassLoadersMap = ConcurrentHashMap<Any, URLClassLoader>()
|
||||
|
||||
private fun Map<String, String>.toPrettyString(): String = buildString {
|
||||
append('[')
|
||||
|
||||
Reference in New Issue
Block a user