use stringbuilder instead of stringbuffer
use string concatenation when no string builder is necessary (compiler will do it for us, and it makes our code easier to read)
diff --git a/src/main/java/org/apache/easyant/core/EasyAntMain.java b/src/main/java/org/apache/easyant/core/EasyAntMain.java
index 7c91c6f..cd818b8 100755
--- a/src/main/java/org/apache/easyant/core/EasyAntMain.java
+++ b/src/main/java/org/apache/easyant/core/EasyAntMain.java
@@ -734,12 +734,7 @@
                 }
                 props.load(in);
 
-                StringBuilder msg = new StringBuilder();
-                msg.append("Apache Ant version ");
-                msg.append(props.getProperty("VERSION"));
-                msg.append(" compiled on ");
-                msg.append(props.getProperty("DATE"));
-                antVersion = msg.toString();
+                antVersion = "Apache Ant version " + props.getProperty("VERSION") + " compiled on " + props.getProperty("DATE");
             } catch (IOException ioe) {
                 throw new BuildException("Could not load the version information", ioe);
             } finally {
diff --git a/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java b/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
index d801337..fce22f5 100644
--- a/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
+++ b/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
@@ -17,27 +17,19 @@
  */
 package org.apache.easyant.core.ant;
 
+import org.apache.easyant.core.EasyAntMagicNames;
+import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
+import org.apache.tools.ant.*;
+import org.apache.tools.ant.util.ClasspathUtils;
+
 import java.io.File;
 import java.io.PrintStream;
 import java.lang.reflect.Field;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.easyant.core.EasyAntMagicNames;
-import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildLogger;
-import org.apache.tools.ant.DefaultLogger;
-import org.apache.tools.ant.Location;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.util.ClasspathUtils;
-
 /**
  * Utilitary class to manipulate ant's project (such as creating toplevel target)
- * 
  */
 public class ProjectUtils {
 
@@ -48,7 +40,7 @@
 
     /**
      * emulates a top level target
-     * 
+     *
      * @return a top level target
      */
     public static Target createTopLevelTarget() {
@@ -60,7 +52,7 @@
     /**
      * Emulate an empty project import task check that projectHelper is at toplevel by checking the size of
      * projectHelper.getImportTask()
-     * 
+     *
      * @return a temporary file acting as a mainscript
      */
     public static File emulateMainScript(Project project) {
@@ -69,11 +61,9 @@
 
     /**
      * Replace main logger implementation
-     * 
-     * @param project
-     *            a given project
-     * @param logger
-     *            {@link BuildLogger} implementation to use
+     *
+     * @param project a given project
+     * @param logger  {@link BuildLogger} implementation to use
      */
     public static void replaceMainLogger(Project project, BuildLogger logger) {
         // Change the default output logger
@@ -118,9 +108,8 @@
     /**
      * Install multi module logger Multi module logger specified through {@link EasyAntMagicNames}.MULTIMODULE_LOGGER
      * property. If this property is not set use default implementation
-     * 
-     * @param project
-     *            a given project where multi module logger should be installed
+     *
+     * @param project a given project where multi module logger should be installed
      */
     public static void installMultiModuleLogger(Project project) {
         String multiModuleLoggerClassName = project.getProperty(EasyAntMagicNames.MULTIMODULE_LOGGER);
@@ -134,9 +123,8 @@
 
     /**
      * Print memory details
-     * 
-     * @param project
-     *            a given project
+     *
+     * @param project a given project
      */
     public static void printMemoryDetails(Project project) {
         project.log("---- Memory Details ----");
@@ -150,15 +138,13 @@
     /**
      * Targets in imported files with a project name and not overloaded by the main build file will be in the target map
      * twice. This method removes the duplicate target.
-     * 
-     * @param targets
-     *            the targets to filter.
+     *
+     * @param targets the targets to filter.
      * @return the filtered targets.
      */
     public static Map<String, Target> removeDuplicateTargets(Map<?, ?> targets) {
         Map<Location, Target> locationMap = new HashMap<Location, Target>();
-        for (Map.Entry<?, ?> entry1 : targets.entrySet()) {
-            Map.Entry<?, ?> entry = (Map.Entry<?, ?>) entry1;
+        for (Map.Entry<?, ?> entry : targets.entrySet()) {
             String name = (String) entry.getKey();
             Target target = (Target) entry.getValue();
             Target otherTarget = locationMap.get(target.getLocation());
diff --git a/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java b/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
index fd88da8..77c011a 100644
--- a/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
+++ b/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
@@ -34,7 +34,7 @@
 
     private long startTime = System.currentTimeMillis();
 
-    protected static void throwableMessage(StringBuffer m, Throwable error, boolean verbose) {
+    protected static void throwableMessage(StringBuilder m, Throwable error, boolean verbose) {
 
         while (error != null) {
             Throwable cause = error.getCause();
@@ -73,7 +73,7 @@
     @Override
     public void buildFinished(BuildEvent event) {
         Throwable error = event.getException();
-        StringBuffer message = new StringBuffer();
+        StringBuilder message = new StringBuilder();
         if (error == null) {
             message.append(StringUtils.LINE_SEP);
             message.append(getBuildSuccessfulMessage());
diff --git a/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java b/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
index 1ee4619..6df22a6 100644
--- a/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
+++ b/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
@@ -184,9 +184,7 @@
     private void printExecutionSubBuildsExecutionTimes(Project project) {
         List<ExecutionResult> allSubBuildResults = project.getReference(EXECUTION_TIMER_BUILD_RESULTS);
         if (allSubBuildResults != null && !allSubBuildResults.isEmpty()) {
-            StringBuilder sb = new StringBuilder();
-            sb.append(LINE_SEP).append("Project Sub-modules Summary: ").append(LINE_SEP).append(formatExecutionResults(allSubBuildResults));
-            project.log(sb.toString());
+                project.log(LINE_SEP + "Project Sub-modules Summary: " + LINE_SEP + formatExecutionResults(allSubBuildResults));
         }
     }
 
diff --git a/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java b/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
index 8482240..9f2c910 100644
--- a/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
+++ b/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
@@ -84,19 +84,7 @@
         out.println("\t<configurations>");
 
         for (Configuration configuration : easyAntReport.getModuleDescriptor().getConfigurations()) {
-            StringBuilder sb = new StringBuilder();
-            sb.append("\t\t<configuration name=\"");
-            sb.append(XMLHelper.escape(configuration.getName()));
-            sb.append("\" description=\"");
-            sb.append(XMLHelper.escape(configuration.getDescription()));
-            sb.append("\" extends=\"");
-            sb.append(XMLHelper.escape(Arrays.toString(configuration.getExtends())));
-            sb.append("\" deprecated=\"");
-            sb.append(XMLHelper.escape(configuration.getDeprecated()));
-            sb.append("\" visibility=\"");
-            sb.append(XMLHelper.escape(configuration.getVisibility().toString()));
-            sb.append("\"/>");
-            out.println(sb.toString());
+            out.println("\t\t<configuration name=\"" + XMLHelper.escape(configuration.getName()) + "\" description=\"" + XMLHelper.escape(configuration.getDescription()) + "\" extends=\"" + XMLHelper.escape(Arrays.toString(configuration.getExtends())) + "\" deprecated=\"" + XMLHelper.escape(configuration.getDeprecated()) + "\" visibility=\"" + XMLHelper.escape(configuration.getVisibility().toString()) + "\"/>");
         }
         out.println("\t</configurations>");
 
@@ -374,7 +362,7 @@
             parameterReports = easyAntReport.getParameterReportsFromCurrentModule();
         }
         for (ParameterReport paramReport : parameterReports) {
-            StringBuffer param = new StringBuffer();
+            StringBuilder param = new StringBuilder();
 
             if (!ParameterType.PROPERTY.equals(paramReport.getType())) {
                 if (ParameterType.PATH.equals(paramReport.getType())) {
diff --git a/src/main/java/org/apache/easyant/tasks/BindTarget.java b/src/main/java/org/apache/easyant/tasks/BindTarget.java
index d49c806..6653be2 100644
--- a/src/main/java/org/apache/easyant/tasks/BindTarget.java
+++ b/src/main/java/org/apache/easyant/tasks/BindTarget.java
@@ -17,14 +17,10 @@
  */
 package org.apache.easyant.tasks;
 
-import java.util.Enumeration;
-
 import org.apache.easyant.core.BuildConfigurationHelper;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.ExtensionPoint;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Task;
+import org.apache.tools.ant.*;
+
+import java.util.Enumeration;
 
 public class BindTarget extends Task {
 
@@ -34,10 +30,9 @@
     private String buildConfigurations;
 
     public void execute() throws BuildException {
-        StringBuilder message = new StringBuilder();
-        message.append("extension-point mapping for target ").append(getTarget()).append(" ");
+        String message = "extension-point mapping for target " + getTarget();
         if (!BuildConfigurationHelper.isBuildConfigurationActive(getBuildConfigurations(), getProject(),
-                message.toString())) {
+                message)) {
             log("no matching build configuration for this extension-point mapping, this mapping will be ignored",
                     Project.MSG_DEBUG);
             return;
diff --git a/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java b/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
index 8caeb1c..f3d21ad 100644
--- a/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
+++ b/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
@@ -107,17 +107,7 @@
                         // .isTranstive() methods doesn't have the same meaning)
                         boolean isTransitiveDependency = latest.getDependencyDescriptor(latest.getRoot()) == null;
                         if ((!isTransitiveDependency) || (isTransitiveDependency && showTransitive)) {
-                            StringBuilder sb = new StringBuilder();
-                            sb.append("\t")//
-                                    .append(originalDependency.getResolvedId().getOrganisation()) //
-                                    .append('#')//
-                                    .append(originalDependency.getResolvedId().getName())//
-                                    .append(isTransitiveDependency ? " (transitive)" : "") //
-                                    .append("\t")//
-                                    .append(originalDependency.getResolvedId().getRevision())//
-                                    .append(" -> ")//
-                                    .append(latest.getResolvedId().getRevision());
-                            log(sb.toString());
+                            log("\t" + originalDependency.getResolvedId().getOrganisation() + '#' + originalDependency.getResolvedId().getName() + (isTransitiveDependency ? " (transitive)" : "") + "\t" + originalDependency.getResolvedId().getRevision() + " -> " + latest.getResolvedId().getRevision());
                             dependencyUpdateDetected = true;
                         }
                     }
diff --git a/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java b/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
index 6e50048..c9cb898 100644
--- a/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
+++ b/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
@@ -86,16 +86,7 @@
         String resolvedRevision = report.getModuleDescriptor().getDependencies()[0].getDependencyRevisionId()
                 .getRevision();
         if (!resolvedRevision.equals(moduleRevisionId.getRevision())) {
-            StringBuilder sb = new StringBuilder();
-            sb.append("\t")//
-                    .append(moduleRevisionId.getOrganisation()) //
-                    .append('#')//
-                    .append(moduleRevisionId.getName())//
-                    .append("\t")//
-                    .append(moduleRevisionId.getRevision())//
-                    .append(" -> ")//
-                    .append(resolvedRevision);
-            log(sb.toString());
+            log("\t" + moduleRevisionId.getOrganisation() + '#' + moduleRevisionId.getName() + "\t" + moduleRevisionId.getRevision() + " -> " + resolvedRevision);
             pluginUpdateDetected=true;
         }
 
diff --git a/src/main/java/org/apache/easyant/tasks/SubModule.java b/src/main/java/org/apache/easyant/tasks/SubModule.java
index 3144ef6..987dcfd 100644
--- a/src/main/java/org/apache/easyant/tasks/SubModule.java
+++ b/src/main/java/org/apache/easyant/tasks/SubModule.java
@@ -315,13 +315,7 @@
             if (keys.contains(target)) {
                 filteredTargets.add(target);
             } else {
-                StringBuilder sb = new StringBuilder();
-                sb.append("Skipping undefined target '")//
-                        .append(target)//
-                        .append("'")//
-                        .append(" on ")//
-                        .append(subProject.getName());
-                subProject.log(sb.toString(), Project.MSG_VERBOSE);
+                subProject.log("Skipping undefined target '" + target + "'" + " on " + subProject.getName(), Project.MSG_VERBOSE);
             }
         }
         return CollectionUtils.flattenToString(filteredTargets);
@@ -334,11 +328,7 @@
      */
     private void printExecutingTargetMsg(Project subProject) {
         final String HEADER = "======================================================================";
-        StringBuilder sb = new StringBuilder();
-        sb.append(HEADER).append(StringUtils.LINE_SEP);
-        sb.append("Executing ").append(targets).append(" on ").append(subProject.getName());
-        sb.append(StringUtils.LINE_SEP).append(HEADER);
-        subProject.log(sb.toString());
+        subProject.log(HEADER + StringUtils.LINE_SEP + "Executing " + targets + " on " + subProject.getName() + StringUtils.LINE_SEP + HEADER);
     }
 
     /**
diff --git a/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java b/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
index 93a2a24..6dc3346 100644
--- a/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
+++ b/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
@@ -63,12 +63,7 @@
      *            ivy instance reference
      */
     protected void loadCachePath(String organisation, String module, String revision, String conf, Reference ivyRef) {
-        StringBuilder sb = new StringBuilder();
-        sb.append("Building classpath (").append(getPathid()).append(")");
-        sb.append(" with ");
-        sb.append(organisation).append("#").append(module).append(";").append(revision);
-        sb.append(" conf=").append(conf);
-        log(sb.toString(), Project.MSG_DEBUG);
+        log("Building classpath (" + getPathid() + ")" + " with " + organisation + "#" + module + ";" + revision + " conf=" + conf, Project.MSG_DEBUG);
         IvyCachePath pluginCachePath = new IvyCachePath();
         pluginCachePath.setOrganisation(organisation);
         pluginCachePath.setModule(module);
diff --git a/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java b/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
index 2545077..b4b1a44 100755
--- a/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
+++ b/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
@@ -52,10 +52,10 @@
     protected Project project;
     protected EasyAntConfiguration conf;
 
-    private StringBuffer logBuffer;
-    private StringBuffer fullLogBuffer;
-    private StringBuffer outBuffer;
-    private StringBuffer errBuffer;
+    private StringBuilder logBuffer;
+    private StringBuilder fullLogBuffer;
+    private StringBuilder outBuffer;
+    private StringBuilder errBuffer;
     private BuildException buildException;
 
     @Rule
@@ -276,7 +276,7 @@
         return buildException;
     }
 
-    private String cleanBuffer(StringBuffer buffer) {
+    private String cleanBuffer(StringBuilder buffer) {
         StringBuilder cleanedBuffer = new StringBuilder();
         for (int i = 0; i < buffer.length(); i++) {
             char ch = buffer.charAt(i);
@@ -403,8 +403,8 @@
             throw new RuntimeException("You must call the configureProject method before initProject()");
         }
         // Flush the buffer
-        logBuffer = new StringBuffer();
-        fullLogBuffer = new StringBuffer();
+        logBuffer = new StringBuilder();
+        fullLogBuffer = new StringBuilder();
         // init the new project instance
         project = new Project();
         project.addBuildListener(new AntTestListener(conf.getMsgOutputLevel()));
@@ -426,14 +426,14 @@
         try {
             sysOut.flush();
             sysErr.flush();
-            outBuffer = new StringBuffer();
+            outBuffer = new StringBuilder();
             PrintStream out = new PrintStream(new AntOutputStream(outBuffer));
             System.setOut(out);
-            errBuffer = new StringBuffer();
+            errBuffer = new StringBuilder();
             PrintStream err = new PrintStream(new AntOutputStream(errBuffer));
             System.setErr(err);
-            logBuffer = new StringBuffer();
-            fullLogBuffer = new StringBuffer();
+            logBuffer = new StringBuilder();
+            fullLogBuffer = new StringBuilder();
             buildException = null;
             project.executeTarget(targetName);
         } finally {
@@ -601,9 +601,9 @@
      * an output stream which saves stuff to our buffer.
      */
     private static class AntOutputStream extends java.io.OutputStream {
-        private StringBuffer buffer;
+        private StringBuilder buffer;
 
-        public AntOutputStream(StringBuffer buffer) {
+        public AntOutputStream(StringBuilder buffer) {
             this.buffer = buffer;
         }
 
diff --git a/src/test/java/org/apache/easyant/tasks/AntTestListener.java b/src/test/java/org/apache/easyant/tasks/AntTestListener.java
index 939b1ee..29b42eb 100644
--- a/src/test/java/org/apache/easyant/tasks/AntTestListener.java
+++ b/src/test/java/org/apache/easyant/tasks/AntTestListener.java
@@ -29,7 +29,7 @@
 
     private int logLevel;
 
-    private StringBuffer buildLog = new StringBuffer();
+    private StringBuilder buildLog = new StringBuilder();
 
     /**
      * Constructs a test listener which will ignore log events above the given level.