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=41c55dedfc037ffa919d017d86624d9f08b991dc;hp=0f143f591f33f11e859823161aac4c99aa815fd9;hb=9907359108e36864d8d9bcdf6acbe7a3b8335bd8;hpb=a1d18fbf7f52702d84278b1a9bc5342e124ce13e diff --git a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java index 0f143f59..41c55ded 100644 --- a/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/AbstractSchemaMojo.java @@ -485,11 +485,16 @@ public abstract class AbstractSchemaMojo extends AbstractMojo Properties properties = new Properties(); ConfigLoader configLoader = new ConfigLoader(bootstrapServiceRegitry); - /** Loading and merging configuration */ + /** Loading configuration */ properties.putAll(loadProperties(configLoader)); LoadedConfig config = loadConfig(configLoader); if (config != null) properties.putAll(config.getConfigurationValues()); + + /** Add the remaining class-path-elements */ + addDirectDependenciesClassPath(classLoader); + + /** Loading and merging configuration from persistence-unit(s) */ ParsedPersistenceXmlDescriptor unit = loadPersistenceUnit(classLoaderService, properties); if (unit != null) @@ -518,7 +523,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo final MetadataSources sources = new MetadataSources(serviceRegistry); /** Add the remaining class-path-elements */ - completeClassPath(classLoader); + addAllDependenciesToClassPath(classLoader); /** Apply mappings from hibernate-configuration, if present */ if (config != null) @@ -534,6 +539,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo if (scanClasses == null) scanClasses = true; Set urls = new HashSet(); + getLog().debug("Compiling the dependencies, that are scanned for annotated classes"); if (scanClasses) addRoot(urls, outputDirectory); if (scanTestClasses) @@ -546,19 +552,28 @@ public abstract class AbstractSchemaMojo extends AbstractMojo /** Follow configuration in persisten unit */ if (scanClasses == null) scanClasses = !unit.isExcludeUnlistedClasses(); + getLog().debug("Compiling the dependencies, that are scanned for annotated classes"); + Set urls = new HashSet(); if (scanClasses) { + getLog().debug("Only dependencies relative to persistent-unit " + unit.getName() + " are scanned!"); /** * Scan the root of the persiten unit and configured jars for * annotated classes */ + getLog().debug(" - adding " + unit.getPersistenceUnitRootUrl()); urls.add(unit.getPersistenceUnitRootUrl()); for (URL url : unit.getJarFileUrls()) + { + getLog().debug(" - adding " + url); urls.add(url); + } + if (scanTestClasses) + addRoot(urls, testOutputDirectory); } - if (scanTestClasses) - addRoot(urls, testOutputDirectory); + else + getLog().debug("Scanning of unlisted classes is prohibited in persistent-unit " + unit.getName()); classes = scanUrls(urls); for (String className : unit.getManagedClassNames()) classes.add(className); @@ -591,9 +606,10 @@ public abstract class AbstractSchemaMojo extends AbstractMojo * Add mappings from files, that are explicitly configured in the * persistence unit */ + getLog().info("Adding mappings from persistence-unit " + unit.getName()); for (String mapping : unit.getMappingFileNames()) { - getLog().info("Adding explicitly configured mapping from " + mapping); + getLog().info(" - adding " + mapping); is = classLoader.getResourceAsStream(mapping); if (is != null) { @@ -828,20 +844,39 @@ public abstract class AbstractSchemaMojo extends AbstractMojo } } - private void completeClassPath(MutableClassLoader classLoader) + private void addDirectDependenciesClassPath(MutableClassLoader classLoader) throws MojoExecutionException { try { - getLog().debug("Completing class-paths of the ClassLoader for project-dependencies..."); - List classpathFiles = project.getCompileClasspathElements(); + getLog().debug("Adding all direct project-dependencies to the ClassLoader..."); + LinkedHashSet urls = new LinkedHashSet(); + addDependencies(urls); if (scanTestClasses) - classpathFiles.addAll(project.getTestClasspathElements()); + addRoot(urls, testOutputDirectory); + classLoader.add(urls); + } + catch (Exception e) + { + getLog().error("Error while creating ClassLoader!", e); + throw new MojoExecutionException(e.getMessage()); + } + } + + private void addAllDependenciesToClassPath(MutableClassLoader classLoader) + throws + MojoExecutionException + { + try + { + getLog().debug("Adding all project-dependencies to the ClassLoader..."); + List classpathFiles = project.getCompileClasspathElements(); + classpathFiles.addAll(project.getTestClasspathElements()); LinkedHashSet urls = new LinkedHashSet(); for (String pathElement : classpathFiles) { - getLog().debug("Dependency: " + pathElement); + getLog().debug(" - adding " + pathElement); urls.add(new File(pathElement).toURI().toURL()); } classLoader.add(urls); @@ -1160,9 +1195,9 @@ public abstract class AbstractSchemaMojo extends AbstractMojo // TODO: add support to read all mappings under a directory throw new MojoFailureException(file.getAbsolutePath() + " is a directory"); if (tracker.track(filename, new FileInputStream(file))) - getLog().debug("Found new or modified mapping-file: " + filename); + getLog().debug(" - found new or modified mapping-file: " + filename); else - getLog().debug("Mapping-file unchanged: " + filename); + getLog().debug(" - mapping-file unchanged: " + filename); sources.addFile(file); } @@ -1184,12 +1219,12 @@ public abstract class AbstractSchemaMojo extends AbstractMojo File dir = new File(path); if (dir.exists()) { - getLog().info("Adding " + dir.getAbsolutePath() + " to the list of roots to scan..."); + getLog().info(" - adding " + dir.getAbsolutePath()); urls.add(dir.toURI().toURL()); } else getLog().warn( - "the directory cannot be scanned for annotated classes, " + + "The directory cannot be scanned for annotated classes, " + "because it does not exist: " + dir.getAbsolutePath() ); @@ -1210,7 +1245,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo Matcher matcher = SPLIT.matcher(scanDependencies); while (matcher.find()) { - getLog().info("Adding dependencies from scope " + matcher.group() + " to the list of roots to scan"); + getLog().debug("Adding dependencies from scope " + matcher.group() + " to the list of roots to scan"); for (Artifact artifact : project.getDependencyArtifacts()) { if (!artifact.getScope().equalsIgnoreCase(matcher.group())) @@ -1220,7 +1255,7 @@ public abstract class AbstractSchemaMojo extends AbstractMojo getLog().warn("Cannot add dependency " + artifact.getId() + ": no JAR-file available!"); continue; } - getLog().info("Adding dependencies from scope " + artifact.getId() + " to the list of roots to scan"); + getLog().debug(" - adding " + artifact.getId()); urls.add(artifact.getFile().toURI().toURL()); } }