X-Git-Url: https://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FCreateMojo.java;h=cdba7a432ca1bcd6222554bd8277f00860e8a9d6;hp=a89d58d2d331e3383bb7878b0f102a8c8193dd2d;hb=d7a81e54bda02c6ea5b08410c7de8eb8e24a192e;hpb=6dff3bfb0f9ea7a1d0cc56398aaad29e31a17b91 diff --git a/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java b/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java index a89d58d2..cdba7a43 100644 --- a/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java +++ b/src/main/java/de/juplo/plugins/hibernate/CreateMojo.java @@ -16,16 +16,22 @@ package de.juplo.plugins.hibernate; * limitations under the License. */ -import java.io.File; +import java.util.Map; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.hibernate.boot.spi.MetadataImplementor; -import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.tool.schema.SourceType; +import org.hibernate.tool.schema.spi.ExecutionOptions; +import org.hibernate.tool.schema.spi.SchemaManagementTool; +import org.hibernate.tool.schema.spi.ScriptSourceInput; +import org.hibernate.tool.schema.spi.SourceDescriptor; +import org.hibernate.tool.schema.spi.TargetDescriptor; /** - * Goal which extracts the hibernate-mapping-configuration and - * exports an according SQL-database-schema. + * Generate/Execute SQL to create a database-schema that represents the + * configured mappings. * * @goal create * @phase process-classes @@ -41,7 +47,7 @@ public class CreateMojo extends AbstractSchemaMojo * relative to the project build directory * (project.build.directory). * - * @parameter property="hibernate.schema.export.create" default-value="schema.sql" + * @parameter property="hibernate.schema.create" default-value="create.sql" * @since 1.0 */ private String outputFile; @@ -58,43 +64,35 @@ public class CreateMojo extends AbstractSchemaMojo @Override - void build(MetadataImplementor metadata) + void build( + MetadataImplementor metadata, + ExecutionOptions options, + TargetDescriptor target + ) throws MojoExecutionException, MojoFailureException { - SchemaExport schemaExport = new SchemaExport(metadata, createNamespaces); - schemaExport.setDelimiter(delimiter); - schemaExport.setFormat(format); + ServiceRegistry service = + metadata.getMetadataBuildingOptions().getServiceRegistry(); + SchemaManagementTool tool = service.getService(SchemaManagementTool.class); - File output = new File(outputFile); - - if (!output.isAbsolute()) - { - // Interpret relative file path relative to build directory - output = new File(buildDirectory, outputFile); - getLog().debug("Adjusted relative path, resulting path is " + output.getPath()); - } - - // Ensure that directory path for specified file exists - File outFileParentDir = output.getParentFile(); - if (null != outFileParentDir && !outFileParentDir.exists()) + Map config = options.getConfigurationValues(); + SourceDescriptor source = new SourceDescriptor() { - try + @Override + public SourceType getSourceType() { - getLog().info("Creating directory path for output file:" + outFileParentDir.getPath()); - outFileParentDir.mkdirs(); + return SourceType.METADATA; } - catch (Exception e) + + @Override + public ScriptSourceInput getScriptSourceInput() { - getLog().error("Error creating directory path for output file: " + e.getLocalizedMessage()); + return null; } - } - - schemaExport.setOutputFile(output.getPath()); - schemaExport.execute(false, this.export, false, true); + }; - for (Object exception : schemaExport.getExceptions()) - getLog().error(exception.toString()); + tool.getSchemaCreator(config).doCreation(metadata, options, source, target); } }