X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate4%2FHbm2DdlMojo.java;h=ef983c2dc83041c218d9bc61fff05c5c72ac399d;hb=5fba40e135677130cbe0ff3c59f6055228293d92;hp=7ee17d67b9378553ac705a32a3c436d2576fa5fd;hpb=64c0a52bdd82142a4c8caef18ab0671a74fdc6c1;p=hibernate-maven-plugin
diff --git a/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java b/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java
index 7ee17d67..ef983c2d 100644
--- a/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java
+++ b/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java
@@ -60,7 +60,7 @@ import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.NamingStrategy;
-import org.hibernate.envers.configuration.AuditConfiguration;
+import org.hibernate.envers.configuration.spi.AuditConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.hibernate.tool.hbm2ddl.SchemaExport.Type;
import org.hibernate.tool.hbm2ddl.Target;
@@ -119,7 +119,7 @@ public class Hbm2DdlMojo extends AbstractMojo
* Classes-Directory to scan.
*
* This parameter defaults to the maven build-output-directory for classes.
- * Additonally, all dependencies are scanned for annotated classes.
+ * Additionally, all dependencies are scanned for annotated classes.
*
* @parameter property="project.build.outputDirectory"
* @since 1.0
@@ -127,7 +127,7 @@ public class Hbm2DdlMojo extends AbstractMojo
private String outputDirectory;
/**
- * Wether to scan test-classes too, or not.
+ * Whether to scan test-classes too, or not.
*
* If this parameter is set to true
the test-classes of the
* artifact will be scanned for hibernate-annotated classes additionally.
@@ -172,10 +172,10 @@ public class Hbm2DdlMojo extends AbstractMojo
*
* If set to true
, the execution is skipped.
*
- * A skipped excecution is signaled via the maven-property
+ * A skipped execution is signaled via the maven-property
* ${hibernate.export.skipped}
.
*
- * The excecution is skipped automatically, if no modified or newly added
+ * The execution is skipped automatically, if no modified or newly added
* annotated classes are found and the dialect was not changed.
*
* @parameter property="hibernate.skip" default-value="${maven.test.skip}"
@@ -264,14 +264,14 @@ public class Hbm2DdlMojo extends AbstractMojo
/**
* Target of execution:
*
- * - NONE only export schema to SQL-script (forces excecution, signals skip)
- * - EXPORT create database (DEFAULT!). forces excecution, signals skip)
+ * - NONE only export schema to SQL-script (forces execution, signals skip)
+ * - EXPORT create database (DEFAULT!). forces execution, signals skip)
* - SCRIPT export schema to SQL-script and print it to STDOUT
* - BOTH
*
*
- * A databaseconnection is only needed for EXPORT and BOTH, but a
- * Hibernate-Dialect must always be choosen.
+ * A database connection is only needed for EXPORT and BOTH, but a
+ * Hibernate-Dialect must always be chosen.
*
* @parameter property="hibernate.export.target" default-value="EXPORT"
* @since 1.0
@@ -335,7 +335,7 @@ public class Hbm2DdlMojo extends AbstractMojo
{
if (skip)
{
- getLog().info("Exectuion of hibernate4-maven-plugin:export was skipped!");
+ getLog().info("Execution of hibernate4-maven-plugin:export was skipped!");
project.getProperties().setProperty(EXPORT_SKIPPED_PROPERTY, "true");
return;
}
@@ -344,7 +344,7 @@ public class Hbm2DdlMojo extends AbstractMojo
boolean modified = false;
File saved = new File(buildDirectory + File.separator + MD5S);
- if (saved.exists())
+ if (saved.isFile() && saved.length() > 0)
{
try
{
@@ -536,7 +536,7 @@ public class Hbm2DdlMojo extends AbstractMojo
throw new MojoExecutionException(e.getMessage());
}
- /** Overwrite values from propertie-file or set, if given */
+ /** Overwrite values from properties-file or set, if given */
if (driverClassName != null)
{
if (properties.containsKey(DRIVER_CLASS))
@@ -667,10 +667,19 @@ public class Hbm2DdlMojo extends AbstractMojo
if (properties.isEmpty())
{
getLog().error("No properties set!");
- throw new MojoFailureException("Hibernate-Configuration is missing!");
+ throw new MojoFailureException("Hibernate configuration is missing!");
+ }
+
+ Configuration config= null;
+ try
+ {
+ config = new ValidationConfiguration(hibernateDialect);
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
}
- Configuration config = new Configuration();
config.setProperties(properties);
if ( properties.containsKey(NAMING_STRATEGY))
@@ -747,15 +756,15 @@ public class Hbm2DdlMojo extends AbstractMojo
}
catch (NoSuchAlgorithmException e)
{
- throw new MojoFailureException("Cannot calculate MD5-summs!", e);
+ throw new MojoFailureException("Cannot calculate MD5 sums!", e);
}
catch (FileNotFoundException e)
{
- throw new MojoFailureException("Cannot calculate MD5-summs!", e);
+ throw new MojoFailureException("Cannot calculate MD5 sums!", e);
}
catch (IOException e)
{
- throw new MojoFailureException("Cannot calculate MD5-summs!", e);
+ throw new MojoFailureException("Cannot calculate MD5 sums!", e);
}
}
@@ -875,9 +884,34 @@ public class Hbm2DdlMojo extends AbstractMojo
}
SchemaExport export = new SchemaExport(config, connection);
- export.setOutputFile(outputFile);
export.setDelimiter(delimiter);
export.setFormat(format);
+
+ File outF = new File(outputFile);
+
+ if (!outF.isAbsolute())
+ {
+ // Interpret relative file path relative to build directory
+ outF = new File(buildDirectory, outputFile);
+ getLog().info("Adjusted relative path, resulting path is " + outF.getPath());
+ }
+
+ // Ensure that directory path for specified file exists
+ File outFileParentDir = outF.getParentFile();
+ if (null != outFileParentDir && !outFileParentDir.exists())
+ {
+ try
+ {
+ getLog().info("Creating directory path for output file:" + outFileParentDir.getPath());
+ outFileParentDir.mkdirs();
+ }
+ catch (Exception e)
+ {
+ getLog().error("Error creating directory path for output file: " + e.getLocalizedMessage());
+ }
+ }
+
+ export.setOutputFile(outF.getPath());
export.execute(target, type);
for (Object exception : export.getExceptions())