GAE:关于目标“enhance_war”中的“api”属性

时间:2012-08-24 22:57:24

标签: java google-app-engine datanucleus

GAE documentation for JPA 2.0表示ant文件的目标enhance_war应为:

  <target name="datanucleusenhance" depends="compile"
  description="Performs enhancement on compiled data classes.">
  <enhance_war war="war">
          <args>
          <arg value="-enhancerVersion"/>
          <arg value="v2"/>
      </args>
  </enhance_war>

但是,我们可以在ant-macros.xml上找到这个:

<attribute name="api" description="persistence api, JDO or JPA" default="JDO"/>

这是正确的,即我们不应该指定JPA用法吗?

1 个答案:

答案 0 :(得分:2)

有趣的是,看看DataNucleus documentation,在Ant部分,我读到了:

api Optional. Defines the API to be used when enhancing JDO, JPA

并且JDO是默认值,我会在需要时将其指定为JPA,即使它似乎仍在工作。

在我看来,宏并没有增加很多价值,所以我决定直接在我的配置中集成增强任务,所以我只能选择以Entity结尾的类,而不是让datanucleus检查每个班级。

<target name="-datanucleusenhance" depends="compile"
        description="Performs enhancement on compiled data classes">
    <enhance failonerror="true" api="JPA">
        <arg value="-enhancerVersion"/>
        <arg value="v2"/>
        <classpath>
            <pathelement path="${main.classes.dir}"/>
            <pathelement path="${sdk.dir}/lib/appengine-tools-api.jar"/>                
        </classpath>
        <fileset dir="${war.dir}/WEB-INF/classes" includes="**/*Entity.class"/>
    </enhance>
</target>

让我知道你在此期间发现了什么!