Index: src/main/java/hudson/maven/MavenBuild.java =================================================================== --- src/main/java/hudson/maven/MavenBuild.java (revision 18437) +++ src/main/java/hudson/maven/MavenBuild.java (working copy) @@ -501,10 +501,17 @@ } finally { if(normalExit) process.recycle(); else process.discard(); - for (int i = buildEnvironments.size() - 1; i >= 0; i--) { - buildEnvironments.get(i).tearDown(MavenBuild.this, listener); - buildEnvironments = null; + + // tear down in reverse order + boolean failed=false; + for( int i=buildEnvironments.size()-1; i>=0; i-- ) { + if (!buildEnvironments.get(i).tearDown(MavenBuild.this,listener)) { + failed=true; + } } + buildEnvironments = null; + // WARNING The return in the finally clause will trump any return before + if (failed) return Result.FAILURE; } } Index: src/main/java/hudson/maven/MavenModuleSetBuild.java =================================================================== --- src/main/java/hudson/maven/MavenModuleSetBuild.java (revision 18437) +++ src/main/java/hudson/maven/MavenModuleSetBuild.java (working copy) @@ -379,10 +379,15 @@ } } finally { // tear down in reverse order - for( int i=buildEnvironments.size()-1; i>=0; i-- ) - buildEnvironments.get(i) - .tearDown(MavenModuleSetBuild.this, listener); - buildEnvironments = null; + boolean failed=false; + for( int i=buildEnvironments.size()-1; i>=0; i-- ) { + if (!buildEnvironments.get(i).tearDown(MavenModuleSetBuild.this,listener)) { + failed=true; + } + } + buildEnvironments = null; + // WARNING The return in the finally clause will trump any return before + if (failed) return Result.FAILURE; } }