X-Git-Url: https://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate4%2FHbm2DdlMojo.java;h=d17dfd71988182fbcbf8636ac659eb16caa2139f;hp=5cca01ebd37f030689c98c3d75d5ca6a2e27e509;hb=aedcc19cfb89a8b387399a978afab1166be816e3;hpb=ba2e48a347a839be63cbce4b7ca2469a600748c6 diff --git a/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java b/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java index 5cca01eb..d17dfd71 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; @@ -88,7 +88,7 @@ public class Hbm2DdlMojo extends AbstractMojo public final static String NAMING_STRATEGY="hibernate.ejb.naming_strategy"; public final static String ENVERS = "hibernate.export.envers"; - public final static String MD5S = "schema.md5s"; + public final static String MD5S = "hibernate4-generatedschema.md5s"; private final static Pattern split = Pattern.compile("[^,\\s]+"); @@ -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: *

* - * 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,7 +667,7 @@ 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 = new Configuration(); @@ -747,15 +747,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 +875,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())