From 8b216a085d45693cc855c9f4554bd0c4b4956756 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Thu, 6 Jul 2023 11:22:14 +0200 Subject: [PATCH] Write raw javac output to a log file --- .../plexus/compiler/javac/JavacCompiler.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java index 3188c71c..b2c7803f 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java @@ -56,8 +56,13 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.Deque; import java.util.HashSet; import java.util.List; @@ -643,6 +648,14 @@ protected CompilerResult compileOutOfProcess(CompilerConfiguration config, Strin getLog().debug("Compiler output:{}{}", EOL, out.getOutput()); } + Path logsDir = config.getBuildDirectory().toPath().resolve("compiler-logs"); + if (!Files.exists(logsDir)) { + Files.createDirectories(logsDir); + } + SimpleDateFormat dateFormat = new SimpleDateFormat("'javac'_yyyy-MM-dd'T'HH_mm_ss.'log'"); + String logFileName = dateFormat.format(new Date()); + Files.write(logsDir.resolve(logFileName), out.getOutput().getBytes(StandardCharsets.UTF_8)); + messages = parseModernStream(returnCode, new BufferedReader(new StringReader(out.getOutput()))); } catch (CommandLineException | IOException e) { throw new CompilerException("Error while executing the external compiler.", e);