X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FAbstractSchemaMojo.java;h=edf8d125f58277b09d9b527702b1e9512381f644;hb=refs%2Fheads%2Fhibernate-5.4.10;hp=e99aea4a0a135b111e60ef77427e3910482c8e3c;hpb=fcbf7066f0a3d076670b5cff5232f36bd2d7a8c7;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 e99aea4a..edf8d125 100644 --- a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java @@ -490,8 +490,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo LoadedConfig config = loadConfig(configLoader); if (config != null) properties.putAll(config.getConfigurationValues()); - ParsedPersistenceXmlDescriptor unit = - loadPersistenceUnit(classLoaderService, properties); + ParsedPersistenceXmlDescriptor unit = loadPersistenceUnit(properties); if (unit != null) properties.putAll(unit.getProperties()); @@ -733,12 +732,25 @@ public abstract class AbstractSchemaMojo extends AbstractMojo { thread.setContextClassLoader(classLoader); build((MetadataImplementor)metadataBuilder.build(), options, target); + if (handler.getExceptions().size() > 0) + { + StringBuilder builder = new StringBuilder(); + builder.append("Hibernate failed:"); + for (Exception e : handler.getExceptions()) + { + builder.append("\n * "); + builder.append(e.getMessage()); + AbstractSchemaMojo.printStrackTrace(builder, e); + builder.append("\n"); + } + String error = builder.toString(); + getLog().error(error); + throw new MojoFailureException(error); + } } finally { thread.setContextClassLoader(contextClassLoader); - for (Exception e : handler.getExceptions()) - getLog().error(e.getMessage()); /** Track, the content of the generated script */ checkOutputFile(output, tracker); } @@ -925,7 +937,14 @@ public abstract class AbstractSchemaMojo extends AbstractMojo * switched to "true", the genearation fo the schema should be forced! */ if (tracker.check(EXECUTE, execute.toString()) && execute) + { + getLog().info( + "hibernate.schema.execute was switched on: " + + "forcing generation/execution of SQL" + ); tracker.touch(); + } + configure(properties, execute, EXECUTE); /** * Configure the generation of the SQL. @@ -938,10 +957,10 @@ public abstract class AbstractSchemaMojo extends AbstractMojo configure(properties, createNamespaces, HBM2DLL_CREATE_NAMESPACES); configure(properties, implicitNamingStrategy, IMPLICIT_NAMING_STRATEGY); configure(properties, physicalNamingStrategy, PHYSICAL_NAMING_STRATEGY); - tracker.track(OUTPUTDIRECTORY, outputDirectory); // << not reflected in hibernate configuration! - tracker.track(SCAN_DEPENDENCIES, scanDependencies); // << not reflected in hibernate configuration! - tracker.track(SCAN_TESTCLASSES, scanTestClasses.toString()); // << not reflected in hibernate configuration! - tracker.track(TEST_OUTPUTDIRECTORY, testOutputDirectory); // << not reflected in hibernate configuration! + configure(properties, outputDirectory, OUTPUTDIRECTORY); + configure(properties, scanDependencies, SCAN_DEPENDENCIES); + configure(properties, scanTestClasses, SCAN_TESTCLASSES); + configure(properties, testOutputDirectory, TEST_OUTPUTDIRECTORY); /** * Special treatment for the configuration-value "show": a change of its @@ -968,7 +987,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo throw new MojoFailureException("Hibernate configuration is missing!"); } - getLog().info("Gathered hibernate-configuration (turn on debugging for details):"); + getLog().info("Gathered configuration:"); for (Entry entry : properties.entrySet()) getLog().info(" " + entry.getKey() + " = " + entry.getValue()); } @@ -1012,14 +1031,22 @@ public abstract class AbstractSchemaMojo extends AbstractMojo if (value != null) { if (properties.containsKey(key)) - getLog().info( - "Overwriting property " + key + "=\"" + - properties.getProperty(key) + - "\" with value \"" + value + "\"" - ); + { + if (!properties.getProperty(key).equals(value)) + { + getLog().info( + "Overwriting property " + key + "=\"" + + properties.getProperty(key) + + "\" with value \"" + value + "\"" + ); + properties.setProperty(key, value); + } + } else + { getLog().debug("Using value \"" + value + "\" for property " + key); - properties.setProperty(key, value); + properties.setProperty(key, value); + } } } @@ -1153,12 +1180,18 @@ public abstract class AbstractSchemaMojo extends AbstractMojo { try { - File dir = new File(outputDirectory); + File dir = new File(path); if (dir.exists()) { getLog().info("Adding " + dir.getAbsolutePath() + " to the list of roots to scan..."); urls.add(dir.toURI().toURL()); } + else + getLog().warn( + "the directory cannot be scanned for annotated classes, " + + "because it does not exist: " + + dir.getAbsolutePath() + ); } catch (MalformedURLException e) { @@ -1312,55 +1345,73 @@ public abstract class AbstractSchemaMojo extends AbstractMojo } private ParsedPersistenceXmlDescriptor loadPersistenceUnit( - ClassLoaderService classLoaderService, Properties properties ) throws MojoFailureException { - PersistenceXmlParser parser = - new PersistenceXmlParser( - classLoaderService, - PersistenceUnitTransactionType.RESOURCE_LOCAL - ); - - Map units = - parser.doResolve(properties); + List units = + PersistenceXmlParser.locatePersistenceUnits(properties); if (persistenceUnit == null) { - Iterator names = units.keySet().iterator(); - if (!names.hasNext()) + if (units.isEmpty()) { getLog().info("Found no META-INF/persistence.xml."); return null; } - String name = names.next(); - if (!names.hasNext()) + if (units.size() == 1) { - getLog().info("Using persistence-unit " + name); - return units.get(name); + ParsedPersistenceXmlDescriptor descriptor = units.get(0); + getLog().info("Using persistence-unit " + descriptor.getName()); + return descriptor; } StringBuilder builder = new StringBuilder(); builder.append("No name provided and multiple persistence units found: "); - builder.append(name); - while(names.hasNext()) + Iterator it = units.iterator(); + while(it.hasNext()) { - builder.append(", "); - builder.append(names.next()); + builder.append(it.next().getName()); + if (it.hasNext()) + builder.append(", "); } builder.append('.'); throw new MojoFailureException(builder.toString()); } - if (units.containsKey(persistenceUnit)) + Iterator it = units.iterator(); + while(it.hasNext()) { - getLog().info("Using configured persistence-unit " + persistenceUnit); - return units.get(persistenceUnit); + ParsedPersistenceXmlDescriptor descriptor = it.next(); + if (descriptor.getName().equals(persistenceUnit)) + { + getLog().info("Using configured persistence-unit " + persistenceUnit); + return descriptor; + } } throw new MojoFailureException("Could not find persistence-unit " + persistenceUnit); } + + + public static void printStrackTrace(StringBuilder builder, Throwable t) + { + while (t != null) + { + builder.append("\n\tCause: "); + builder.append(t.getMessage() == null ? "" : t.getMessage().replaceAll("\\s+", " ")); + for (StackTraceElement trace : t.getStackTrace()) + { + builder.append("\n\t"); + builder.append(trace.getClassName()); + builder.append("."); + builder.append(trace.getMethodName()); + builder.append("():"); + builder.append(trace.getLineNumber()); + } + t = t.getCause(); + } + } }