diff --git a/kotlin/builder/src/io/bazel/kotlin/builder/mode/jvm/KotlinJvmCompilationExecutor.kt b/kotlin/builder/src/io/bazel/kotlin/builder/mode/jvm/KotlinJvmCompilationExecutor.kt
index 096ce49..6ce5a15 100644
--- a/kotlin/builder/src/io/bazel/kotlin/builder/mode/jvm/KotlinJvmCompilationExecutor.kt
+++ b/kotlin/builder/src/io/bazel/kotlin/builder/mode/jvm/KotlinJvmCompilationExecutor.kt
@@ -64,15 +64,20 @@
     }
 
     private fun runAnnotationProcessors(command: BuilderCommand): BuilderCommand =
-        if (command.info.plugins.annotationProcessorsList.isNotEmpty()) {
-            kotlinCompiler.runAnnotationProcessor(command)
-            File(command.outputs.sourceGenDir).walkTopDown()
-                .filter { it.isFile }
-                .map { it.path }
-                .iterator()
-                .let { commandBuilder.withGeneratedSources(command, it) }
-        } else {
-            command
+        try {
+            if (command.info.plugins.annotationProcessorsList.isNotEmpty()) {
+                kotlinCompiler.runAnnotationProcessor(command)
+                File(command.outputs.sourceGenDir).walkTopDown()
+                    .filter { it.isFile }
+                    .map { it.path }
+                    .iterator()
+                    .let { commandBuilder.withGeneratedSources(command, it) }
+            } else {
+                command
+            }
+        } catch(ex: CompilationStatusException) {
+            ex.lines.also(outputSink::deliver)
+            throw ex
         }
 
     private fun compileClasses(context: Context, command: BuilderCommand) {
