Added a warning, if a directory, that should be scanned, does not exist
[hibernate4-maven-plugin] / src / main / java / de / juplo / plugins / hibernate / AbstractSchemaMojo.java
index e99aea4..28260f0 100644 (file)
@@ -733,12 +733,23 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
       {
         thread.setContextClassLoader(classLoader);
         build((MetadataImplementor)metadataBuilder.build(), options, target);
+        if (handler.getExceptions().size() > 0)
+        {
+          StringBuilder builder = new StringBuilder();
+          builder.append("Hibernate failed:");
+          for (Exception e : handler.getExceptions())
+          {
+            builder.append("\n * ");
+            builder.append(e.getMessage());
+          }
+          String error = builder.toString();
+          getLog().error(error);
+          throw new MojoFailureException(error);
+        }
       }
       finally
       {
         thread.setContextClassLoader(contextClassLoader);
-        for (Exception e : handler.getExceptions())
-          getLog().error(e.getMessage());
         /** Track, the content of the generated script */
         checkOutputFile(output, tracker);
       }
@@ -925,7 +936,14 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
      * switched to "true", the genearation fo the schema should be forced!
      */
     if (tracker.check(EXECUTE, execute.toString()) && execute)
+    {
+      getLog().info(
+          "hibernate.schema.execute was switched on: " +
+          "forcing generation/execution of SQL"
+          );
       tracker.touch();
+    }
+    configure(properties, execute, EXECUTE);
 
     /**
      * Configure the generation of the SQL.
@@ -938,10 +956,10 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
     configure(properties, createNamespaces, HBM2DLL_CREATE_NAMESPACES);
     configure(properties, implicitNamingStrategy, IMPLICIT_NAMING_STRATEGY);
     configure(properties, physicalNamingStrategy, PHYSICAL_NAMING_STRATEGY);
-    tracker.track(OUTPUTDIRECTORY, outputDirectory); // << not reflected in hibernate configuration!
-    tracker.track(SCAN_DEPENDENCIES, scanDependencies); // << not reflected in hibernate configuration!
-    tracker.track(SCAN_TESTCLASSES, scanTestClasses.toString()); // << not reflected in hibernate configuration!
-    tracker.track(TEST_OUTPUTDIRECTORY, testOutputDirectory); // << not reflected in hibernate configuration!
+    configure(properties, outputDirectory, OUTPUTDIRECTORY);
+    configure(properties, scanDependencies, SCAN_DEPENDENCIES);
+    configure(properties, scanTestClasses, SCAN_TESTCLASSES);
+    configure(properties, testOutputDirectory, TEST_OUTPUTDIRECTORY);
 
     /**
      * Special treatment for the configuration-value "show": a change of its
@@ -968,7 +986,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
       throw new MojoFailureException("Hibernate configuration is missing!");
     }
 
-    getLog().info("Gathered hibernate-configuration (turn on debugging for details):");
+    getLog().info("Gathered configuration:");
     for (Entry<Object,Object> entry : properties.entrySet())
       getLog().info("  " + entry.getKey() + " = " + entry.getValue());
   }
@@ -1012,14 +1030,22 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
     if (value != null)
     {
       if (properties.containsKey(key))
-        getLog().info(
-            "Overwriting property " + key + "=\"" +
-            properties.getProperty(key) +
-            "\" with value \"" + value + "\""
-            );
+      {
+        if (!properties.getProperty(key).equals(value))
+        {
+          getLog().info(
+              "Overwriting property " + key + "=\"" +
+              properties.getProperty(key) +
+              "\" with value \"" + value + "\""
+              );
+          properties.setProperty(key, value);
+        }
+      }
       else
+      {
         getLog().debug("Using value \"" + value + "\" for property " + key);
-      properties.setProperty(key, value);
+        properties.setProperty(key, value);
+      }
     }
   }
 
@@ -1153,12 +1179,18 @@ public abstract class AbstractSchemaMojo extends AbstractMojo
   {
     try
     {
-      File dir = new File(outputDirectory);
+      File dir = new File(path);
       if (dir.exists())
       {
         getLog().info("Adding " + dir.getAbsolutePath() + " to the list of roots to scan...");
         urls.add(dir.toURI().toURL());
       }
+      else
+        getLog().warn(
+            "the directory cannot be scanned for annotated classes, " +
+            "because it does not exist: " +
+            dir.getAbsolutePath()
+            );
     }
     catch (MalformedURLException e)
     {