You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by jl...@apache.org on 2013/05/22 11:29:36 UTC

svn commit: r1485129 - /ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java

Author: jlboudart
Date: Wed May 22 09:29:36 2013
New Revision: 1485129

URL: http://svn.apache.org/r1485129
Log:
EASYANT-54 Exceptions in initialization phase of project are swallowed 
patch applied from Tim Enderling thanks for the fix

Modified:
    ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java

Modified: ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java
URL: http://svn.apache.org/viewvc/ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java?rev=1485129&r1=1485128&r2=1485129&view=diff
==============================================================================
--- ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java (original)
+++ ant/easyant/core/trunk/src/main/java/org/apache/easyant/core/EasyAntEngine.java Wed May 22 09:29:36 2013
@@ -400,51 +400,75 @@ public class EasyAntEngine {
      * @param project
      */
     public void initProject(Project project) {
-        project.init();
-        project.addReference(EasyAntMagicNames.EASYANT_ENGINE_REF, this);
-
-        // set user-define properties
-        Enumeration<?> properties = configuration.getDefinedProps().propertyNames();
-        while (properties.hasMoreElements()) {
-            String arg = (String) properties.nextElement();
-            String value = (String) configuration.getDefinedProps().get(arg);
-            project.setUserProperty(arg, value);
-        }
-
-        project.setUserProperty(EasyAntMagicNames.EASYANT_OFFLINE, Boolean.toString(configuration.isOffline()));
-
-        ProjectHelper helper = ProjectUtils.configureProjectHelper(project);
-
-        IvyAntSettings easyantIvySettings = configureEasyAntIvyInstance(project);
-        configurePluginService(project, easyantIvySettings);
-
-        // Profile
-        if (configuration.getActiveBuildConfigurations().size() != 0) {
-            String buildConfigurations = null;
-            for (String conf : configuration.getActiveBuildConfigurations()) {
-                if (buildConfigurations == null) {
-                    buildConfigurations = conf;
-                } else {
-                    buildConfigurations = buildConfigurations + "," + conf;
+        try {
+            project.init();
+            project.addReference(EasyAntMagicNames.EASYANT_ENGINE_REF, this);
+    
+            // set user-define properties
+            Enumeration<?> properties = configuration.getDefinedProps().propertyNames();
+            while (properties.hasMoreElements()) {
+                String arg = (String) properties.nextElement();
+                String value = (String) configuration.getDefinedProps().get(arg);
+                project.setUserProperty(arg, value);
+            }
+    
+            project.setUserProperty(EasyAntMagicNames.EASYANT_OFFLINE, Boolean.toString(configuration.isOffline()));
+    
+            ProjectHelper helper = ProjectUtils.configureProjectHelper(project);
+    
+            IvyAntSettings easyantIvySettings = configureEasyAntIvyInstance(project);
+            configurePluginService(project, easyantIvySettings);
+    
+            // Profile
+            if (configuration.getActiveBuildConfigurations().size() != 0) {
+                String buildConfigurations = null;
+                for (String conf : configuration.getActiveBuildConfigurations()) {
+                    if (buildConfigurations == null) {
+                        buildConfigurations = conf;
+                    } else {
+                        buildConfigurations = buildConfigurations + "," + conf;
+                    }
+    
                 }
-
+                project.log("Active build configurations : " + buildConfigurations, Project.MSG_INFO);
+                project.setProperty(EasyAntMagicNames.ACTIVE_BUILD_CONFIGURATIONS, buildConfigurations);
             }
-            project.log("Active build configurations : " + buildConfigurations, Project.MSG_INFO);
-            project.setProperty(EasyAntMagicNames.ACTIVE_BUILD_CONFIGURATIONS, buildConfigurations);
+            loadSystemPlugins(project, true);
+    
+            locateBuildModuleAndBuildFile(project);
+    
+            if (configuration.getBuildModule() != null || configuration.getBuildFile() != null) {
+                LoadModule lm = new LoadModule();
+                lm.setBuildModule(configuration.getBuildModule());
+                lm.setBuildFile(configuration.getBuildFile());
+                executeTask(lm, "load-module", project);
+            }
+    
+            // FIXME:resolve extensionOf attributes this should be exposed by Apache Ant
+            ProjectUtils.injectTargetIntoExtensionPoint(project, helper);        
+        } catch (RuntimeException exc) {            
+            fireBuildFinished(project, exc);
+            throw exc;
+        } catch (Error e) {
+            fireBuildFinished(project, e);
+            throw e;        
         }
-        loadSystemPlugins(project, true);
-
-        locateBuildModuleAndBuildFile(project);
+    }
 
-        if (configuration.getBuildModule() != null || configuration.getBuildFile() != null) {
-            LoadModule lm = new LoadModule();
-            lm.setBuildModule(configuration.getBuildModule());
-            lm.setBuildFile(configuration.getBuildFile());
-            executeTask(lm, "load-module", project);
+    protected void fireBuildFinished(Project project, Throwable error) {
+        try {
+            project.fireBuildFinished(error);
+        } catch (Throwable t) {
+            // yes, I know it is bad style to catch Throwable,
+            // but if we don't, we lose valuable information
+            System.err.println("Caught an exception while logging the" + " end of the build.  Exception was:");
+            t.printStackTrace();
+            if (error != null) {
+                System.err.println("There has been an error prior to" + " that:");
+                error.printStackTrace();
+            }
+            throw new BuildException(t);
         }
-
-        // FIXME:resolve extensionOf attributes this should be exposed by Apache Ant
-        ProjectUtils.injectTargetIntoExtensionPoint(project, helper);
     }
 
     public void loadSystemPlugins(Project project, boolean isRootProject) {
@@ -608,19 +632,7 @@ public class EasyAntEngine {
             error = e;
             throw e;
         } finally {
-            try {
-                project.fireBuildFinished(error);
-            } catch (Throwable t) {
-                // yes, I know it is bad style to catch Throwable,
-                // but if we don't, we lose valuable information
-                System.err.println("Caught an exception while logging the" + " end of the build.  Exception was:");
-                t.printStackTrace();
-                if (error != null) {
-                    System.err.println("There has been an error prior to" + " that:");
-                    error.printStackTrace();
-                }
-                throw new BuildException(t);
-            }
+            fireBuildFinished(project, error);
         }
         if (configuration.isShowMemoryDetails() || configuration.getMsgOutputLevel() >= Project.MSG_VERBOSE) {
             ProjectUtils.printMemoryDetails(project);