Merge branch 'master-v2' into bugfix/UIMA-6242-uimaFIT-Maven-plugin-should-fail-on-error-by-default

* master-v2:
  [UIMA-6240] Failure to resolve type system imports when generating descriptors
diff --git a/uimafit-maven-plugin/src/main/java/org/apache/uima/fit/maven/GenerateDescriptorsMojo.java b/uimafit-maven-plugin/src/main/java/org/apache/uima/fit/maven/GenerateDescriptorsMojo.java
index c616d84..2e85b4b 100644
--- a/uimafit-maven-plugin/src/main/java/org/apache/uima/fit/maven/GenerateDescriptorsMojo.java
+++ b/uimafit-maven-plugin/src/main/java/org/apache/uima/fit/maven/GenerateDescriptorsMojo.java
@@ -80,6 +80,12 @@
   @Parameter(defaultValue = "${project.build.sourceEncoding}", required = true)
   private String encoding;
 
+  /**
+   * Fail on error.
+   */
+  @Parameter(defaultValue = "true", required = true)
+  private boolean failOnError;
+
   enum TypeSystemSerialization {
     NONE, EMBEDDED
   }
@@ -162,13 +168,13 @@
           componentsManifest.append("classpath*:").append(clazzPath + ".xml").append('\n');
         }
       } catch (SAXException e) {
-        getLog().warn("Cannot serialize descriptor for [" + clazzName + "]", e);
+        handleError("Cannot serialize descriptor for [" + clazzName + "]", e);
       } catch (IOException e) {
-        getLog().warn("Cannot write descriptor for [" + clazzName + "]", e);
+        handleError("Cannot write descriptor for [" + clazzName + "]", e);
       } catch (ClassNotFoundException e) {
-        getLog().warn("Cannot analyze class [" + clazzName + "]", e);
+        handleError("Cannot analyze class [" + clazzName + "]", e);
       } catch (ResourceInitializationException e) {
-        getLog().warn("Cannot generate descriptor for [" + clazzName + "]", e);
+        handleError("Cannot generate descriptor for [" + clazzName + "]", e);
       } finally {
         Thread.currentThread().setContextClassLoader(classLoader);
       }
@@ -185,12 +191,20 @@
       try {
         FileUtils.fileWrite(path.getPath(), encoding, componentsManifest.toString());
       } catch (IOException e) {
-        throw new MojoExecutionException("Cannot write components manifest to [" + path + "]"
+        handleError("Cannot write components manifest to [" + path + "]"
                 + ExceptionUtils.getRootCauseMessage(e), e);
       }
     }
   }
 
+  private void handleError(String message, Exception e) throws MojoExecutionException {
+    if (failOnError) {
+      throw new MojoExecutionException(message, e);
+    }
+
+    getLog().error(message, e);
+  }
+
   private void embedTypeSystems(ProcessingResourceMetaData metadata)
           throws ResourceInitializationException {
     TypeSystemDescriptionFactory.forceTypeDescriptorsScan();