如何使用Ant + IntelliJ IDEA进行OpenJPA增强

exp*_*ert 6 ant intellij-idea openjpa

这让我发疯,我很惊讶官方文档绝对是用途.

这是我有的:

  • IntelliJ IDEA 11
  • OpenJPA 2.1.1

由于openjpa被添加到已使用的库列表中,我已经有了OpenJPA的类路径,如下所示

<path id="library.openjpa.classpath">
    <fileset dir="${basedir}/lib/openjpa">
        <patternset refid="library.patterns"/>
    </fileset>
</path>
Run Code Online (Sandbox Code Playgroud)

根据官方文档,我添加了以下目标

<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>
Run Code Online (Sandbox Code Playgroud)

它给了我例外

C:\ work\prj\build.xml:283:org.apache.openjpa.util.MetaDataException:无法配置MetaDataFactory(conf.newMetaDataFactoryInstance()返回null).这可能意味着找不到配置属性.确保您具有META-INF/persistence.xml文件,它在类路径中可用,或者您用于配置的属性文件可用.如果您使用的是Ant,请参阅任务嵌套元素的或属性.如果您的OpenJPA分发包损坏,或者您的安全策略过于严格,也会发生这种情况.

我使用Process Monitor进行了测试,可以看到它打开并读取 persistence.xml.

有人提出我遇到问题的bug,他得到的答案是找不到persistence.xml问题的根源.

问题是:

  1. 我能做些什么才能让它发挥作用?
  2. 我可以通过跳过需要persistence.xml并仅为我希望增强的.class文件指定模式来使其工作吗?
  3. 这是更多的Ant问题.如何使OpenJPA增强器persistence.xml在目录以外的目录中查找openjpa-2.1.1.jar

exp*_*ert 8

所以如果没有记录,我就无法工作propertiesFile.这是适合我的版本.同时指定persistence-unit via #会使NullReferenceException失败.

<target name="enhance">
    <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask">
        <classpath refid="library.openjpa.classpath"/>
    </taskdef>

    <openjpac>
        <classpath refid="library.openjpa.classpath"/>
        <classpath location="${reporting.output.dir}"/>
        <config propertiesFile = "${basedir}/src/META-INF/persistence.xml"/>
    </openjpac>
</target>
Run Code Online (Sandbox Code Playgroud)