diff --git a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt index c04407663b6..7bc437aef82 100644 --- a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt +++ b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Extension.kt @@ -40,7 +40,8 @@ import javax.annotation.processing.Processor import com.sun.tools.javac.util.List as JavacList class ClasspathBasedKapt3Extension( - val annotationProcessingClasspath: List, + compileClasspath: List, + annotationProcessingClasspath: List, javaSourceRoots: List, sourcesOutputDir: File, classFilesOutputDir: File, @@ -50,7 +51,7 @@ class ClasspathBasedKapt3Extension( val useLightAnalysis: Boolean, pluginInitializedTime: Long, logger: KaptLogger -) : AbstractKapt3Extension(annotationProcessingClasspath, javaSourceRoots, sourcesOutputDir, +) : AbstractKapt3Extension(compileClasspath, annotationProcessingClasspath, javaSourceRoots, sourcesOutputDir, classFilesOutputDir, options, aptOnly, pluginInitializedTime, logger) { override val analyzePartially: Boolean get() = useLightAnalysis @@ -71,7 +72,8 @@ class ClasspathBasedKapt3Extension( } override fun loadProcessors(): List { - val classLoader = URLClassLoader(annotationProcessingClasspath.map { it.toURI().toURL() }.toTypedArray()) + val classpath = annotationProcessingClasspath + compileClasspath + val classLoader = URLClassLoader(classpath.map { it.toURI().toURL() }.toTypedArray()) this.annotationProcessingClassLoader = classLoader val processors = ServiceLoader.load(Processor::class.java, classLoader).toList() @@ -98,7 +100,8 @@ class ClasspathBasedKapt3Extension( } abstract class AbstractKapt3Extension( - val classpath: List, + val compileClasspath: List, + val annotationProcessingClasspath: List, val javaSourceRoots: List, val sourcesOutputDir: File, val classFilesOutputDir: File, @@ -145,8 +148,8 @@ abstract class AbstractKapt3Extension( val (annotationProcessingTime) = measureTimeMillis { kaptContext.doAnnotationProcessing( - javaSourceFiles, processors, - classpath, sourcesOutputDir, classFilesOutputDir, kotlinSourceStubs) + javaSourceFiles, processors, compileClasspath, annotationProcessingClasspath, + sourcesOutputDir, classFilesOutputDir, kotlinSourceStubs) } logger.info { "Annotation processing took $annotationProcessingTime ms" } diff --git a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt index e2d2f55dc02..b4326fc5b08 100644 --- a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt +++ b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt @@ -138,7 +138,6 @@ class Kapt3ComponentRegistrar : ComponentRegistrar { val contentRoots = configuration[JVMConfigurationKeys.CONTENT_ROOTS] ?: emptyList() val compileClasspath = contentRoots.filterIsInstance().map { it.file } - val classpath = apClasspath + compileClasspath val javaSourceRoots = contentRoots.filterIsInstance().map { it.file } @@ -155,13 +154,14 @@ class Kapt3ComponentRegistrar : ComponentRegistrar { logger.info("Source output directory: $sourcesOutputDir") logger.info("Classes output directory: $classFilesOutputDir") logger.info("Stubs output directory: $stubsOutputDir") - logger.info("Annotation processing classpath: " + classpath.joinToString()) + logger.info("Compile classpath: " + compileClasspath.joinToString()) + logger.info("Annotation processing classpath: " + apClasspath.joinToString()) logger.info("Java source roots: " + javaSourceRoots.joinToString()) logger.info("Options: $apOptions") } val kapt3AnalysisCompletedHandlerExtension = ClasspathBasedKapt3Extension( - classpath, javaSourceRoots, sourcesOutputDir, classFilesOutputDir, stubsOutputDir, apOptions, + compileClasspath, apClasspath, javaSourceRoots, sourcesOutputDir, classFilesOutputDir, stubsOutputDir, apOptions, isAptOnly, useLightAnalysis, System.currentTimeMillis(), logger) AnalysisHandlerExtension.registerExtension(project, kapt3AnalysisCompletedHandlerExtension) } diff --git a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/annotationProcessing.kt b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/annotationProcessing.kt index ecfab8ee3c3..175c74fcb5b 100644 --- a/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/annotationProcessing.kt +++ b/plugins/kapt3/src/org/jetbrains/kotlin/kapt3/annotationProcessing.kt @@ -33,14 +33,16 @@ import com.sun.tools.javac.util.List as JavacList fun KaptContext.doAnnotationProcessing( javaSourceFiles: List, processors: List, - classpath: List, + compileClasspath: List, + annotationProcessingClasspath: List, sourcesOutputDir: File, classesOutputDir: File, additionalSources: JavacList = JavacList.nil() ) { with (options) { put(Option.PROC, "only") // Only process annotations - put(Option.CLASSPATH, classpath.joinToString(File.pathSeparator) { it.canonicalPath }) + put(Option.CLASSPATH, compileClasspath.joinToString(File.pathSeparator) { it.canonicalPath }) + put(Option.PROCESSORPATH, annotationProcessingClasspath.joinToString(File.pathSeparator) { it.canonicalPath }) put(Option.S, sourcesOutputDir.canonicalPath) put(Option.D, classesOutputDir.canonicalPath) } diff --git a/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3IntegrationTest.kt b/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3IntegrationTest.kt index b1ebaff7576..04b8d22bad9 100644 --- a/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3IntegrationTest.kt +++ b/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3IntegrationTest.kt @@ -139,7 +139,7 @@ abstract class AbstractKotlinKapt3IntegrationTest : CodegenTestCase() { javaSourceRoots: List, outputDir: File, options: Map - ) : AbstractKapt3Extension(emptyList(), javaSourceRoots, outputDir, outputDir, + ) : AbstractKapt3Extension(emptyList(), emptyList(), javaSourceRoots, outputDir, outputDir, options, true, System.currentTimeMillis(), KaptLogger(true) ) { internal var savedStubs: String? = null diff --git a/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3Test.kt b/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3Test.kt index 9e092b60d5a..4e82ad02d15 100644 --- a/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3Test.kt +++ b/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/AbstractKotlinKapt3Test.kt @@ -100,7 +100,8 @@ abstract class AbstractKotlinKaptContextTest : AbstractKotlinKapt3Test() { val sourceOutputDir = Files.createTempDirectory("kaptRunner").toFile() try { kaptRunner.doAnnotationProcessing(emptyList(), listOf(JavaKaptContextTest.simpleProcessor()), - classpath = listOf(), sourcesOutputDir = sourceOutputDir, classesOutputDir = sourceOutputDir, + compileClasspath = emptyList(), annotationProcessingClasspath = emptyList(), + sourcesOutputDir = sourceOutputDir, classesOutputDir = sourceOutputDir, additionalSources = compilationUnits) val javaFiles = sourceOutputDir.walkTopDown().filter { it.isFile && it.extension == "java" } diff --git a/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/JavaKaptContextTest.kt b/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/JavaKaptContextTest.kt index 69c3bf23d86..e8545f54cc1 100644 --- a/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/JavaKaptContextTest.kt +++ b/plugins/kapt3/test/org/jetbrains/kotlin/kapt3/test/JavaKaptContextTest.kt @@ -82,7 +82,8 @@ class JavaKaptContextTest { ).doAnnotationProcessing( listOf(javaSourceFile), listOf(processor), - emptyList(), // classpath + emptyList(), // compile classpath + emptyList(), // annotation processing classpath outputDir, outputDir) }