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=f6e18ea4471dbc9f8d56bd314803f2d4761ae6db;hp=09bd83d41eb7e30f8b7da819c21558f3e74bd4e1;hb=dc652540d007799fb23fc11d06186aa5325058db;hpb=3a7590b8862c3be691b05110f423865f6674f6f6 diff --git a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java index 09bd83d4..f6e18ea4 100644 --- a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java @@ -542,6 +542,34 @@ public abstract class AbstractSchemaMojo extends AbstractMojo classes = scanUrls(urls); for (String className : unit.getManagedClassNames()) classes.add(className); + /** + * Add mappings from the default mapping-file + * META-INF/orm.xml, if present + */ + try + { + InputStream is = classLoader.getResourceAsStream("META-INF/orm.xml"); + if (is != null) + { + 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()) + { + getLog().info("Adding explicitly configured mapping from " + mapping); + tracker.track(mapping, classLoader.getResourceAsStream(mapping)); + sources.addResource(mapping); + } + } + catch (IOException e) + { + throw new MojoFailureException("Error reading XML-mappings", e); + } } /** Add the configured/collected annotated classes */ @@ -613,6 +641,21 @@ public abstract class AbstractSchemaMojo extends AbstractMojo thread.setContextClassLoader(contextClassLoader); } } + catch (MojoExecutionException e) + { + tracker.failed(); + throw e; + } + catch (MojoFailureException e) + { + tracker.failed(); + throw e; + } + catch (RuntimeException e) + { + tracker.failed(); + throw e; + } finally { /** Remember mappings and configuration */ @@ -1038,8 +1081,10 @@ public abstract class AbstractSchemaMojo extends AbstractMojo packageName = 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) @@ -1053,10 +1098,15 @@ public abstract class AbstractSchemaMojo extends AbstractMojo getLog().debug("New or modified package: " + packageName); else getLog().debug("Unchanged package: " + packageName); - getLog().info("Adding annotated package " + packageName); + getLog().info("Adding annotations from package " + packageName); sources.addPackage(packageName); } packages.add(packageName); + int i = packageName.lastIndexOf('.'); + if (i < 0) + packageName = null; + else + packageName = packageName.substring(0,i); } } catch (Exception e)