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=96848edc3c367c792fd3ddc3bb123b60c8ff3474;hp=044e3307ec7aa47f2d203426fb7400751fb57777;hb=97a45d03e1144d30b90f2f566517be22aca39358;hpb=02312592d27d628cc7e0d8e28cc40bf74a80de21 diff --git a/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java b/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java index 044e3307..96848edc 100644 --- a/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate4/Hbm2DdlMojo.java @@ -151,7 +151,7 @@ public class Hbm2DdlMojo extends AbstractMojo * The excecution is skipped automatically, if no modified or newly added * annotated classes are found and the dialect was not changed. * - * @parameter property="maven.test.skip" default-value="false" + * @parameter property="hibernate.export.skip" default-value="false" */ private boolean skip; @@ -226,12 +226,15 @@ 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. + * * @parameter property="hibernate.export.target" default-value="EXPORT" */ private String target; @@ -245,6 +248,8 @@ public class Hbm2DdlMojo extends AbstractMojo *
  • BOTH (DEFAULT!)
  • * * + * If NONE is choosen, no databaseconnection is needed. + * * @parameter property="hibernate.export.type" default-value="BOTH" */ private String type; @@ -284,10 +289,6 @@ public class Hbm2DdlMojo extends AbstractMojo return; } - File dir = new File(outputDirectory); - if (!dir.exists()) - throw new MojoExecutionException("Cannot scan for annotated classes in " + outputDirectory + ": directory does not exist!"); - Map md5s; boolean modified = false; File saved = new File(buildDirectory + File.separator + MD5S); @@ -316,7 +317,7 @@ public class Hbm2DdlMojo extends AbstractMojo } catch (IOException e) { - getLog().warn("Cannot create saved for timestamps: " + e); + getLog().debug("Cannot create file \"" + saved.getPath() + "\" for timestamps: " + e); } } @@ -355,17 +356,22 @@ public class Hbm2DdlMojo extends AbstractMojo try { AnnotationDB db = new AnnotationDB(); - getLog().info("Scanning directory " + outputDirectory + " for annotated classes..."); - URL dirUrl = dir.toURI().toURL(); - db.scanArchives(dirUrl); + File dir = new File(outputDirectory); + if (dir.exists()) + { + getLog().info("Scanning directory " + outputDirectory + " for annotated classes..."); + URL dirUrl = dir.toURI().toURL(); + db.scanArchives(dirUrl); + } if (scanTestClasses) { dir = new File(testOutputDirectory); - if (!dir.exists()) - throw new MojoExecutionException("Cannot scan for annotated test-classes in " + testOutputDirectory + ": directory does not exist!"); - getLog().info("Scanning directory " + testOutputDirectory + " for annotated classes..."); - dirUrl = dir.toURI().toURL(); - db.scanArchives(dirUrl); + if (dir.exists()) + { + getLog().info("Scanning directory " + testOutputDirectory + " for annotated classes..."); + URL dirUrl = dir.toURI().toURL(); + db.scanArchives(dirUrl); + } } Set classNames = new HashSet(); @@ -381,9 +387,11 @@ public class Hbm2DdlMojo extends AbstractMojo { Class annotatedClass = classLoader.loadClass(name); classes.add(annotatedClass); + String resourceName = annotatedClass.getName(); + resourceName = resourceName.substring(resourceName.lastIndexOf(".") + 1, resourceName.length()) + ".class"; InputStream is = annotatedClass - .getResourceAsStream(annotatedClass.getSimpleName() + ".class"); + .getResourceAsStream(resourceName); byte[] buffer = new byte[1024*4]; // copy data in 4MB-chunks int i; while((i = is.read(buffer)) > -1) @@ -582,12 +590,17 @@ public class Hbm2DdlMojo extends AbstractMojo MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); for (String filename : hibernateMapping.split("[\\s,]+")) { - File file = null; - for (Resource resource : project.getResources()) + // First try the filename as absolute/relative path + File file = new File(filename); + if (!file.exists()) { - file = new File(resource.getDirectory() + File.separator + filename); - if (file.exists()) - break; + // If the file was not found, search for it in the resource-directories + for (Resource resource : project.getResources()) + { + file = new File(resource.getDirectory() + File.separator + filename); + if (file.exists()) + break; + } } if (file != null && file.exists()) { @@ -684,6 +697,7 @@ public class Hbm2DdlMojo extends AbstractMojo * hibernate does not use the context-classloader of the current * thread and, hence, would not be able to resolve the driver-class! */ + getLog().debug("Target: " + target + ", Type: " + type); switch (target) { case EXPORT: