The following shows how to define a OpenJPA enhancer task and how to invoke
the task in ANT.
First you'll need to compile the Entites. (Note: as a prereq to running the
enhance task, I copied my persistence.xml file to my /build directory. You
might not need to do this, but the persistence.xml has to be in the
Next you'll need to configure the enhancer task and a classpath where the
task can be found.
The final step is to call the enhance task. A snippet is provided below:
<pathid="jpa.enhancement.classpath"><pathelementlocation="bin"/><!-- lib contains all of the jars that came with the OpenJPA binary download --><filesetdir="lib"><includename="**/*.jar"/></fileset></path><targetname="enhance"depends="build"><!-- This is a bit of a hack, but I needed to copy the persistence.xml file from my src dir to the build dir when we run enhancement --><copyincludeemptydirs="false"todir="bin"><filesetdir="src"excludes="**/*.launch, **/*.java"/></copy><!-- define the openjpac task --><taskdefname="openjpac"classname="org.apache.openjpa.ant.PCEnhancerTask"><classpathrefid="jpa.enhancement.classpath"/></taskdef><!-- invoke enhancer the enhancer --><openjpac><classpathrefid="jpa.enhancement.classpath"/></openjpac><echomessage="Enhancing complete."/></target>
The persistence.xml doesn't have to be complete. The required elements are
the persistence-unit (any legal name will do), and the provider (you have
to identify openjpa). You can identify the classes to be enhanced either in
this file or in the enhancer task ant project.