Close the classloader if it's a closeable (java7+)
diff --git a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java
index ef4e2a1..3130428 100644
--- a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java
+++ b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.maven_plugin;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -134,11 +135,17 @@
         Model model = loadModel(opt); 
         if (model == null) {
             listener.message(xsdFile, "Failed to create model");
+            if (loader instanceof Closeable) {
+                ((Closeable)loader).close();
+            }
             return -1;
         }
         Outline outline = model.generateCode(opt, listener);
         if (outline == null) {
             listener.message(xsdFile, "Failed to generate code");
+            if (loader instanceof Closeable) {
+                ((Closeable)loader).close();
+            }
             return -1;
         }
 
@@ -148,8 +155,14 @@
             model.codeModel.build(cw);
         } catch (IOException e) {
             listener.error(e);
+            if (loader instanceof Closeable) {
+                ((Closeable)loader).close();
+            }
             return -1;
         }
+        if (loader instanceof Closeable) {
+            ((Closeable)loader).close();
+        }
         return 0;        
     }