如何用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>

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

<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>

它给我异常

C: 撮合下 build . xml: 283: org.apache.openjpa.util.MetaDataException:无法配置元数据工厂(conf.newMetaDataFactoryInstance()返回null)。这可能意味着没有找到任何配置属性。确保你有一个META-INF/persistence.xml文件,它在你的类路径中可用;或者您用于配置的属性文件是可用。如果您正在使用Ant,请参阅or任务嵌套元素的属性。如果您的OpenJPA发行jar已损坏,或者如果您的安全策略过于严格。

我测试了进程监视器,可以看到它打开并读取 persistence.xml

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

问题是:

  1. 我怎么做才能使它工作?
  2. 我可以通过跳过需要persistence.xml和只是指定模式。class文件,我想要增强它的工作吗?
  3. 这是一个更重要的问题。我如何使OpenJPA增强器在openjpa-2.1.1.jar所在的目录之外寻找persistence.xml ?

所以我不能使它没有未记录的propertiesFile工作。这是适合我的版本。通过#指定持久化单元也会导致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>

看来您可能错过了文档中的一个重要部分。您的library.openjpa.classpath缺少对实体的引用,以及persistence.xml文件的位置。试着添加它,看看效果如何。

<path id="jpa.enhancement.classpath">
  <pathelement location="bin"/> <!-- add something like this -->
  <!-- lib contains all of the jars that came with the OpenJPA binary download -->
  <fileset dir="lib">
    <include name="**/*.jar"/>
  </fileset>
</path>

相关内容

  • 没有找到相关文章

最新更新