 ------
 Introduction
 ------
 Rahul Thakur, Mark Struberg
 ------
 November 29, 2010
 ------

OpenJPA Maven Plugin

 As of this writing the OpenJPA Plugin provides 3 goals to
 cope with persistence-enabled classes in a project using Maven 2.


* Goals Overview

  *  <<<openjpa:enhance>>> enhances the persistence-enabled classes in a
  project.

  *  <<<openjpa:test-enhance>>> enhances the persistence-enabled test classes in a
  project. This is typically bound to the process-test-classes phase.

  * <<<openjpa:sql>>> creates a file which contains the SQL statements
  for creating or updating the database or directly create the schema
  in the database.

  * <<<openjpa:schema>>> create the schema mapping XML file

  All these OpenJPA Mojos expect the following resources to be
  present on classpath:

  *  <<<META-INF/persistence.xml>>>, or

  *  <<<META-INF/openjpa.xml>>>

  OpenJPA documentation is available
  {{{http://openjpa.apache.org/documentation.html}here}}.


* Examples

  Below is an OpenJPA plugin configuration example.

+----------+
  <plugin>
    <groupId>org.apache.openjpa</groupId>
    <artifactId>openjpa-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
      <includes>com/myproject/entities/**/*.class</includes>
      <addDefaultConstructor>true</addDefaultConstructor>
      <enforcePropertyRestrictions>true</enforcePropertyRestrictions>

      <!-- Pass additional properties to the Plugin here -->
      <toolProperties>
        <property>
          <name>directory</name>
          <value>otherdirectoryvalue</value>
        </property>
      </toolProperties>

    </configuration>
    <executions>
      <execution>
        <id>enhancer</id>
        <phase>process-classes</phase>
        <goals>
          <goal>enhance</goal>
        </goals>
      </execution>
    </executions>

  </plugin>
+-----------+

  * You don't have to explicitly specify an OpenJPA dependency in the dependencies section
  of the plugin! Follow the following guide to use this plugin with {{{examples/older_versions.html}older OpenJPA versions}}.


  * The <<<openjpa:enhance>>> mojo will automatically be called in the
  <<<process-classes>>> phase.

  From the command prompt/terminal window.

  * Change directory to the project's root directory.

  * Run the following goal to run OpenJPA PCEnhancer on persistence-enabled
  classes manually.

----------
  mvn openjpa:enhance
----------


  * Run the following goal to run OpenJPA MappingTool for creating the
  database creation SQL statements for all persistence-enabled classes manually.

----------
  mvn openjpa:sql
----------


  * Run the following goal to run OpenJPA MappingTool for creating the
  schema mapping XML file for all persistence-enabled classes manually.

----------
  mvn openjpa:schema
----------
