Esto me está volviendo loco y estoy sorprendido de que official documentation sea absolutamente útil.Cómo hacer una mejora OpenJPA con Ant + IntelliJ IDEA
Aquí es lo que tengo:
- IntelliJ IDEA 11
- OpenJPA 2.1.1
Como se suma openjpa en la lista de bibliotecas usadas que ya tenía ruta de clases a que se parece a OpenJPA esto
<path id="library.openjpa.classpath">
<fileset dir="${basedir}/lib/openjpa">
<patternset refid="library.patterns"/>
</fileset>
</path>
De acuerdo con la documentación oficial, agregué el siguiente objetivo
<target name="enhance">
<copy includeemptydirs="false" todir="${basedir}/lib/openjpa">
<fileset dir="src" excludes="**/*.launch, **/*.java"/>
</copy>
<taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
<classpath refid="library.openjpa.classpath"/>
</taskdef>
<openjpac>
<classpath refid="library.openjpa.classpath"/>
</openjpac>
</target>
Me da excepción
C: \ work \ prj \ build.xml: 283: org.apache.openjpa.util.MetaDataException: MetaDataFactory no podía ser configurado (conf. newMetaDataFactoryInstance() devolvió nulo). Esto podría significar que no se encontraron propiedades de configuración. Asegúrese de tener un archivo META-INF/persistence.xml, que está disponible en su classpath, o que el archivo de propiedades que está utilizando para la configuración es disponible. Si está utilizando Ant, consulte los atributos del elemento anidado de la tarea. Esto también puede ocurrir si sus jar de distribución OpenJPA están dañados o si su política de seguridad es demasiado estricta.
He probado con Process Monitor y se puede ver que se abre y lee persistence.xml
.
Alguna persona filed bug teniendo problemas que tengo y la respuesta que obtuvo fue que encontrar persistence.xml
no es una fuente de problema.
Las preguntas son:
- ¿Qué puedo hacer para que funcione?
- ¿Puedo hacer que funcione omitiendo la necesidad de
persistence.xml
y simplemente especificando el patrón para los archivos .class que quiero mejorar? - Es más una pregunta de Ant. ¿Cómo puedo hacer que Enhancer de OpenJPA busque
persistence.xml
en un directorio que no sea el deopenjpa-2.1.1.jar
?
¿Ha verificado que el directorio META-INF está en su classpath? – Rick
No sé cómo especificar un directorio adicional de classpath en el script Ant. Pero solo para estar seguro de haber copiado 'persistence.xml' en el directorio donde se encuentra el jar de OpenJPA. – expert