diff --git a/build/lib/jps/jps-builders.jar b/build/lib/jps/jps-builders.jar index a41086f10dd2..008124d3cd71 100644 Binary files a/build/lib/jps/jps-builders.jar and b/build/lib/jps/jps-builders.jar differ diff --git a/jps/standalone-builder/src/org/jetbrains/jps/gant/GantWithClasspathTask.java b/jps/standalone-builder/src/org/jetbrains/jps/gant/GantWithClasspathTask.java index 216e603dee76..8e81ac921b1c 100644 --- a/jps/standalone-builder/src/org/jetbrains/jps/gant/GantWithClasspathTask.java +++ b/jps/standalone-builder/src/org/jetbrains/jps/gant/GantWithClasspathTask.java @@ -16,20 +16,37 @@ package org.jetbrains.jps.gant; import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.BuildListener; +import org.apache.tools.ant.DefaultLogger; import org.codehaus.gant.ant.Gant; +import java.io.PrintStream; import java.lang.reflect.Field; /** * @author nik */ public class GantWithClasspathTask extends Gant { + public static PrintStream out = null; + @Override public void execute() throws BuildException { ClassLoader oldLoader = Thread.currentThread().getContextClassLoader(); try { ClassLoader loader = getClass().getClassLoader(); Thread.currentThread().setContextClassLoader(loader); + for (BuildListener listener : this.getProject().getBuildListeners()) { + if (listener instanceof DefaultLogger) { + try { + Field field = DefaultLogger.class.getDeclaredField("out"); + field.setAccessible(true); + out = (PrintStream)field.get(listener); + break; + } + catch (Exception ignored) { + } + } + } try { Field field = Gant.class.getDeclaredField("file"); field.setAccessible(true); diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy index a67431b321f5..701f27f04fa3 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildUtils.groovy @@ -81,11 +81,20 @@ class BuildUtils { //if the build script is running under Ant or AntBuilder it may replace the standard System.out def field = Main.class.getDeclaredField("out") field.accessible = true - return (PrintStream) field.get(null) + return (PrintStream) field.get(null) // No longer works in recent Ant 1.9.x and 1.10 } catch (Throwable ignored) { - return System.out } + try { + def clazz = Class.forName("org.jetbrains.jps.gant.GantWithClasspathTask") + def field = clazz.getDeclaredField("out") + field.setAccessible(true) + def out = field.get(null) + if (out != null) return out as PrintStream + } + catch (Throwable ignored) { + } + return System.out } static void defineFtpTask(BuildContext context) {