diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/IdeaCoreLoggerFactory.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/IdeaCoreLoggerFactory.java new file mode 100644 index 00000000000..032b2943ebe --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/IdeaCoreLoggerFactory.java @@ -0,0 +1,88 @@ +package org.jetbrains.kotlin.maven; + +import com.intellij.openapi.diagnostic.Logger; +import org.apache.log4j.Level; +import org.apache.maven.plugin.logging.Log; +import org.apache.maven.plugin.logging.SystemStreamLog; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.StringJoiner; + +public class IdeaCoreLoggerFactory implements Logger.Factory { + + @NotNull + private final Log parent; + + public IdeaCoreLoggerFactory(@NotNull Log parent) { + this.parent = parent; + } + + public IdeaCoreLoggerFactory() { + this(new SystemStreamLog()); + } + + @NotNull + @Override + public Logger getLoggerInstance(@NotNull String s) { + return new Logger() { + @Override + public boolean isDebugEnabled() { + return parent.isDebugEnabled(); + } + + @Override + public void debug(String s) { + parent.debug(s); + } + + @Override + public void debug(@Nullable Throwable throwable) { + parent.debug(s); + } + + @Override + public void debug(String s, @Nullable Throwable throwable) { + parent.debug(s, throwable); + } + + @Override + public void info(String s) { + parent.info(s); + } + + @Override + public void info(String s, @Nullable Throwable throwable) { + parent.info(s, throwable); + } + + @Override + public void warn(String s, @Nullable Throwable throwable) { + parent.warn(s, throwable); + } + + @Override + public void error(String s, @Nullable Throwable throwable, @NotNull String... strings) { + String message = s; + + if (strings.length > 0) { + StringJoiner j = new StringJoiner("\n"); + + j.add(s); + j.add("details:"); + for (String details : strings) { + j.add(details); + } + + message = j.toString(); + } + + parent.error(message, throwable); + } + + @Override + public void setLevel(Level level) { + } + }; + } +} diff --git a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java index 6aa9064f9ad..13a56d87b5c 100644 --- a/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java +++ b/libraries/tools/kotlin-maven-plugin/src/main/java/org/jetbrains/kotlin/maven/KotlinCompileMojoBase.java @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.maven; import com.google.common.base.Joiner; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.Processor; @@ -189,6 +190,12 @@ public abstract class KotlinCompileMojoBase e private final static Pattern OPTION_PATTERN = Pattern.compile("([^:]+):([^=]+)=(.*)"); + static { + if (System.getProperty("kotlin.compiler.X.enable.idea.logger") != null) { + Logger.setFactory(IdeaCoreLoggerFactory.class); + } + } + @Override public void execute() throws MojoExecutionException, MojoFailureException {