X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FAbstractSchemaMojo.java;h=d4386ebe2a76023a6ccd5255180f5df077763dfd;hb=refs%2Fheads%2Fhibernate5;hp=09bd83d41eb7e30f8b7da819c21558f3e74bd4e1;hpb=3a7590b8862c3be691b05110f423865f6674f6f6;p=hibernate4-maven-plugin
diff --git a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java
index 09bd83d4..d4386ebe 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.
@@ -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)