Not enough... Here's the code (that way someone can tell me how I should
*really* have done it ;-):

package com.lgc.jax.tools;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.DefaultLogger;

/**
 * An ANT build logger that reformats SUN's modern Javac compiler
 * error messages so Microsoft Visual Studio can jump directly to
 * the file and line of the error using F4.
 * <p>
 * Only reformats output of the <javac /> ANT task. Should be used
 * in conjunction with -emacs ANT mode (unadorned messages) to work
 * correctly with Visual Studio.
 * <p>
 * <em>Should tests whether the modern compiler from SUN's JDK is the
 * current compiler, and only reformats error message of this compiler.</em>
 * <p>
 * To use this class with ANT, use the
 * <tt>-emacs -logger com.lgc.jax.tools.MsdevAntBuildLogger</tt>
 * switch on ANT's command line.
 *
 * @author <a href="mailto:[EMAIL PROTECTED]";>Dominique Devienne</a>
 * @version Nov 2001 - Copyright (c) 2001, Landmark Graphics Corp.
 */
public class MsdevAntBuildLogger extends DefaultLogger {

  private static final String INDEXOF = ".java:";
  private static final String PATTERN = "(.*\\.java):(\\d+): (.*)$";
  private Pattern _pattern = Pattern.compile(PATTERN);

  public void messageLogged(BuildEvent event) {
    // task.getTaskName()=="javac" works, but is it portable?
    if (event.getTask()!=null && event.getTask().getTaskName()=="javac") {
      // Filter out messages based on priority, like the base class does!
      if (event.getPriority() <= msgOutputLevel) {
        // Quick test to avoid expense of REGEX in most cases
        String msg = event.getMessage(); // original message
        if (msg.indexOf(INDEXOF) >= 0) {
          Matcher matcher = _pattern.matcher(msg);
          if (matcher.matches()) {
            // Reformat the message to be compatible with Visual Studio:
            // from P:\java\com\lgc\gocad\TSurf.java:10: blablabla
            // to   P:\java\com\lgc\gocad\TSurf.java(10) : blablabla
            StringBuffer buffer = new StringBuffer(msg.length()+3);
            buffer.append(matcher.group(1)); // filename
            buffer.append('(');              // line number prefix
            buffer.append(matcher.group(2)); // line number
            buffer.append(") : ");           // line number suffix
            buffer.append(matcher.group(3)); // error message
            event.setMessage(buffer.toString(), event.getPriority());
          }
        }
      }
    }
    super.messageLogged(event);
  }

} // END class MsdevAntBuildLogger

-----Original Message-----
From: Erik Hatcher [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, May 23, 2002 12:04 PM
To: Ant Users List
Subject: Re: Borland Jbuilder finally adds ant support (at a price)

The -emacs output was not what Visual Studio liked?


----- Original Message -----
From: "Dominique Devienne" <[EMAIL PROTECTED]>
To: "'Ant Users List'" <[EMAIL PROTECTED]>
Sent: Thursday, May 23, 2002 12:11 PM
Subject: RE: Borland Jbuilder finally adds ant support (at a price)


> Vaguely related to the subject only, but to jump to the correct line in
> source where javac compile errors occurred, when running an ant build from
> within Visual Studio (sic!), I wrote a tiny Ant build listener that
> reformatted error messages to be compatible with VS (since the latter
cannot
> be configured with an error format like any good editor). --DD
>
> -----Original Message-----
> From: max [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, May 22, 2002 11:03 AM
> To: Ant Users List
> Subject: Re: Borland Jbuilder finally adds ant support (at a price)
>
> You say awesome, and I ask you the following:
>
> How do you come from the possible error output from ant (e.g. javac
compile
> errors) to the proper location in the source file in Eclipse ?
>
> /max
> ----- Original Message -----
> From: "GOMEZ Henri" <[EMAIL PROTECTED]>
> To: "Ant Users List" <[EMAIL PROTECTED]>
> Sent: Wednesday, May 22, 2002 12:02 PM
> Subject: RE: Borland Jbuilder finally adds ant support (at a price)
>
>
> Just use Eclipse IDE (www.eclipse.org), ant support
> is awesome ;)
>
> -
> Henri Gomez                 ___[_]____
> EMAIL : [EMAIL PROTECTED]        (. .)
> PGP KEY : 697ECEDD    ...oOOo..(_)..oOOo...
> PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6
>
>
>
> >-----Original Message-----
> >From: Steve Loughran [mailto:[EMAIL PROTECTED]]
> >Sent: Tuesday, May 21, 2002 2:22 AM
> >To: ant-user
> >Subject: Borland Jbuilder finally adds ant support (at a price)
> >
> >
> >From the feature set of JBuilder 7, I see that they have finally added
> >native ant support
> >http://www.borland.com/jbuilder/pdf/jb7_feamatrix.pdf
> >
> >but only on the enterprise edition. Like, they had to pay so much for
> >ant.jar that they had to put them in the prestige premium tool
> >that costs
> >the same as two laptops.
> >
> >It's funny; I'd have thought that ant would help deprecate the
> >selling price
> >of the premium stuff, or at least let IDEs focus on what they
> >are good at:
> >editing, refactoring and collaboration. But no, borland keep
> >ant part of the
> >premium product, perhaps to ensure that all the features ant
> >offers -junit,
> ><zip>, deployment are also kept at a premium.
> >
> >Sigh.
> >
> >On the plus side, it means that all of the mainstream IDEs
> >support Ant, even
> >the 'Enterprise' tools. This is a sign of progress. Even in
> >the enterprise,
> >your build can be independent of an IDE. I wonder if they
> >realise what they
> >have done.
> >
> >-Steve
> >
> >[running IDEA fullscreen in the other monitor, generating java
> >classes from
> >an XSD file via Castor and ant, then deploying to tomcat  and
> >running http
> >unit tests]
> >
> >
> >--
> >To unsubscribe, e-mail:
> ><mailto:[EMAIL PROTECTED]>
> >For
> >additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> >
> >
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to