Add option to disable AP discovery in compile classpath
#KT-24530 Fixed To disable discovery and enable avoidance for kapt tasks, use "kapt.includeCompileClasspath = false"
This commit is contained in:
@@ -47,7 +47,10 @@ class KaptOptions(
|
||||
val processingOptions: MutableMap<String, String> = mutableMapOf()
|
||||
val javacOptions: MutableMap<String, String> = mutableMapOf()
|
||||
|
||||
val flags: MutableSet<KaptFlag> = mutableSetOf(KaptFlag.USE_LIGHT_ANALYSIS)
|
||||
val flags: MutableSet<KaptFlag> = mutableSetOf(
|
||||
KaptFlag.USE_LIGHT_ANALYSIS,
|
||||
KaptFlag.INCLUDE_COMPILE_CLASSPATH
|
||||
)
|
||||
|
||||
var mode: AptMode = AptMode.WITH_COMPILATION
|
||||
var detectMemoryLeaks: DetectMemoryLeaksMode = DetectMemoryLeaksMode.DEFAULT
|
||||
@@ -88,7 +91,8 @@ enum class KaptFlag(val description: String) {
|
||||
USE_LIGHT_ANALYSIS("Use light analysis"),
|
||||
CORRECT_ERROR_TYPES("Correct error types"),
|
||||
MAP_DIAGNOSTIC_LOCATIONS("Map diagnostic locations"),
|
||||
STRICT("Strict mode");
|
||||
STRICT("Strict mode"),
|
||||
INCLUDE_COMPILE_CLASSPATH("Detect annotation processors in compile classpath");
|
||||
}
|
||||
|
||||
interface KaptSelector {
|
||||
|
||||
@@ -5,10 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.kapt3.base
|
||||
|
||||
import org.jetbrains.kotlin.base.kapt3.KaptFlag
|
||||
import org.jetbrains.kotlin.base.kapt3.KaptOptions
|
||||
import org.jetbrains.kotlin.kapt3.base.util.KaptLogger
|
||||
import org.jetbrains.kotlin.kapt3.base.util.info
|
||||
import java.io.Closeable
|
||||
import java.io.File
|
||||
import java.lang.reflect.Field
|
||||
import java.lang.reflect.Modifier
|
||||
import java.net.URLClassLoader
|
||||
@@ -23,7 +25,12 @@ open class ProcessorLoader(private val options: KaptOptions, private val logger:
|
||||
fun loadProcessors(parentClassLoader: ClassLoader = ClassLoader.getSystemClassLoader()): LoadedProcessors {
|
||||
clearJarURLCache()
|
||||
|
||||
val classpath = (options.processingClasspath + options.compileClasspath).distinct()
|
||||
val classpath = LinkedHashSet<File>().apply {
|
||||
addAll(options.processingClasspath)
|
||||
if (options[KaptFlag.INCLUDE_COMPILE_CLASSPATH]) {
|
||||
addAll(options.compileClasspath)
|
||||
}
|
||||
}
|
||||
val classLoader = URLClassLoader(classpath.map { it.toURI().toURL() }.toTypedArray(), parentClassLoader)
|
||||
this.annotationProcessingClassLoader = classLoader
|
||||
|
||||
|
||||
@@ -149,6 +149,11 @@ enum class KaptCliOption(
|
||||
),
|
||||
|
||||
DETECT_MEMORY_LEAKS_OPTION("detectMemoryLeaks", "true | false", "Detect memory leaks in annotation processors"),
|
||||
INCLUDE_COMPILE_CLASSPATH(
|
||||
"includeCompileClasspath",
|
||||
"true | false",
|
||||
"Discover annotation processors in compile classpath"
|
||||
),
|
||||
|
||||
INFO_AS_WARNINGS_OPTION("infoAsWarnings", "true | false", "Show information messages as warnings"),
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@ class Kapt3CommandLineProcessor : CommandLineProcessor {
|
||||
INFO_AS_WARNINGS_OPTION -> setFlag(KaptFlag.INFO_AS_WARNINGS, value)
|
||||
STRICT_MODE_OPTION -> setFlag(KaptFlag.STRICT, value)
|
||||
SHOW_PROCESSOR_TIMINGS -> setFlag(KaptFlag.SHOW_PROCESSOR_TIMINGS, value)
|
||||
INCLUDE_COMPILE_CLASSPATH -> setFlag(KaptFlag.INCLUDE_COMPILE_CLASSPATH, value)
|
||||
|
||||
DETECT_MEMORY_LEAKS_OPTION -> setSelector(enumValues<DetectMemoryLeaksMode>(), value) { detectMemoryLeaks = it }
|
||||
APT_MODE_OPTION -> setSelector(enumValues<AptMode>(), value) { mode = it }
|
||||
|
||||
Reference in New Issue
Block a user