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)