X-Git-Url: https://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FAbstractSchemaMojo.java;h=e121f2a1b8c329b3a2c8951843af1187b60ff620;hp=1eb54e56fa3ee57b757be0e9449f478ba701a37b;hb=f2db3594a18d7307235ebb4d38a570e5b04ea112;hpb=851ced4e14fefba16b690155b698e7a39670e196 diff --git a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java index 1eb54e56..e121f2a1 100644 --- a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java @@ -136,7 +136,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo * If set to true, the execution is skipped. *

* A skipped execution is signaled via the maven-property - * ${hibernate.export.skipped}. + * ${hibernate.schema.skipped}. *

* The execution is skipped automatically, if no modified or newly added * annotated classes are found and the dialect was not changed. @@ -546,30 +546,60 @@ public abstract class AbstractSchemaMojo extends AbstractMojo * Add mappings from the default mapping-file * META-INF/orm.xml, if present */ - try + boolean error = false; + InputStream is; + is = classLoader.getResourceAsStream("META-INF/orm.xml"); + if (is != null) { - InputStream is = classLoader.getResourceAsStream("META-INF/orm.xml"); - if (is != null) + getLog().info("Adding default JPA-XML-mapping from META-INF/orm.xml"); + try { - getLog().info("Adding default JPA-XML-mapping from META-INF/orm.xml"); tracker.track("META-INF/orm.xml", is); sources.addResource("META-INF/orm.xml"); } - /** - * Add mappings from files, that are explicitly configured in the - * persistence unit - */ - for (String mapping : unit.getMappingFileNames()) + catch (IOException e) { - getLog().info("Adding explicitly configured mapping from " + mapping); - tracker.track(mapping, classLoader.getResourceAsStream(mapping)); - sources.addResource(mapping); + getLog().error("cannot read META-INF/orm.xml: " + e); + error = true; } } - catch (IOException e) + else { - throw new MojoFailureException("Error reading XML-mappings", e); + getLog().debug("no META-INF/orm.xml found"); } + /** + * Add mappings from files, that are explicitly configured in the + * persistence unit + */ + for (String mapping : unit.getMappingFileNames()) + { + getLog().info("Adding explicitly configured mapping from " + mapping); + is = classLoader.getResourceAsStream(mapping); + if (is != null) + { + try + { + tracker.track(mapping, is); + sources.addResource(mapping); + } + catch (IOException e) + { + getLog().info("cannot read mapping-file " + mapping + ": " + e); + error = true; + } + } + else + { + getLog().error("cannot find mapping-file " + mapping); + error = true; + } + } + if (error) + throw new MojoFailureException( + "error, while reading mappings configured in persistence-unit \"" + + unit.getName() + + "\"" + ); } /** Add the configured/collected annotated classes */ @@ -1057,8 +1087,9 @@ public abstract class AbstractSchemaMojo extends AbstractMojo try { getLog().info("Adding annotated resource: " + name); - String packageName; + String packageName = null; + boolean error = false; try { Class annotatedClass = classLoaderService.classForName(name); @@ -1069,20 +1100,34 @@ public abstract class AbstractSchemaMojo extends AbstractMojo resourceName.length() ) + ".class"; InputStream is = annotatedClass.getResourceAsStream(resourceName); - if (tracker.track(name, is)) - getLog().debug("New or modified class: " + name); + if (is != null) + { + if (tracker.track(name, is)) + getLog().debug("New or modified class: " + name); + else + getLog().debug("Unchanged class: " + name); + sources.addAnnotatedClass(annotatedClass); + packageName = annotatedClass.getPackage().getName(); + } else - getLog().debug("Unchanged class: " + name); - sources.addAnnotatedClass(annotatedClass); - packageName = annotatedClass.getPackage().getName(); + { + getLog().error("cannot find ressource " + resourceName + " for class " + name); + error = true; + } } catch(ClassLoadingException e) { packageName = name; } + if (error) + { + throw new MojoExecutionException("error while inspecting annotated class " + name); + } - if (!packages.contains(packageName)) + while (packageName != null) { + if (packages.contains(packageName)) + return; String resource = packageName.replace('.', '/') + "/package-info.class"; InputStream is = classLoaderService.locateResourceStream(resource); if (is == null) @@ -1100,6 +1145,11 @@ public abstract class AbstractSchemaMojo extends AbstractMojo sources.addPackage(packageName); } packages.add(packageName); + int i = packageName.lastIndexOf('.'); + if (i < 0) + packageName = null; + else + packageName = packageName.substring(0,i); } } catch (Exception e)