Java 如何在Netbeans中使用Eclipse链接JPA应用静态编织Ant任务?
我使用的是Netbeans 7.1.1和Glassfish 3.1.2服务器。作为JPA提供商,我决定使用Netbeans附带的EclipseLink2.3.0。由于我想使用延迟抓取,并且我的项目由大约45个JPA实体类组成,它们之间有很多关系,所以我决定使用静态编织。此外,@Entity类位于单独的类库项目中,而persistence.xml位于EJB项目中 我已经按照这里的说明进行了操作: 我将ant任务放入build-impl.xml文件(如下所示)。使用Netbeans时正确吗?以下是build-impl.xml中的代码片段:Java 如何在Netbeans中使用Eclipse链接JPA应用静态编织Ant任务?,java,jpa,static,entity,eclipselink,Java,Jpa,Static,Entity,Eclipselink,我使用的是Netbeans 7.1.1和Glassfish 3.1.2服务器。作为JPA提供商,我决定使用Netbeans附带的EclipseLink2.3.0。由于我想使用延迟抓取,并且我的项目由大约45个JPA实体类组成,它们之间有很多关系,所以我决定使用静态编织。此外,@Entity类位于单独的类库项目中,而persistence.xml位于EJB项目中 我已经按照这里的说明进行了操作: 我将ant任务放入build-impl.xml文件(如下所示)。使用Netbeans时正确吗?以下是b
<target name="-post-jar" description="New task definition for EclipseLink static weaving">
<taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="-post-jar">
<weave source="${dist.jar}\MyProject.jar"
target="${dist.jar}\MyProject_Weaved.jar"
persistenceinfo="${dist.jar}..\..\MyProjectEE\MyProject-ejb\build\classes\META-INF\persistence.xml"
loglevel="FINER">
<classpath>
<pathelement path="${dist.jar}\lib\eclipselink-2.3.0.jar"/>
<pathelement path="${dist.jar}\lib\javaee-api-6.0.jar"/>
<pathelement path="${dist.jar}\lib\jasypt-1.9.0.jar"/>
<pathelement path="${dist.jar}\lib\javax.persistence-2.0.jar"/>
<pathelement path="${dist.jar}\lib\org.eclipse.persistence.jpa.jpql_1.0.0.jar"/>
<pathelement path="${dist.jar}\lib\joda-time-2.1.jar"/>
<pathelement path="${dist.jar}\lib\jms.jar"/>
</classpath>
</weave>
</target>
我在这里犯了什么错误?您需要将eclipselink.jar和javax.persistence.jar添加到Ant类路径中
在Netbeans中,转到Tools/Options/misscellaneous/Ant,并在那里编辑类路径。我还必须包括org.eclipse.persistence.jpa.jpa.jpql_1.0.1.jar和org.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar,以便实现编织。希望这能有所帮助。我也在使用Netbeans 8.0.1开发带有Eclipselink 2.4.2的java ee项目,在TomEE 1.7.0中,我只是将以下内容放入我的build.xml(我从不修改build-impl.xml,因为Netbeans可以在配置、构建中修改某些内容时覆盖它): 最重要的事情是正确定义类路径 现在如果我跑
ant weaving
将进行静态编织。构建大约需要15秒,因此我仅在测试服务器和生产服务器上以这种方式构建,而不是在我的开发环境中
如果我只是简单地运行(或使用Netbeans构建菜单)
这座建筑将在没有编织的情况下正常建造
当然,我在persistence.xml中有一个编织定义,如下所示:
<persistence-unit name="MY-PU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>mydata</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.weaving" value="static"/>
</properties>
</persistence-unit>
org.eclipse.persistence.jpa.PersistenceProvider
我的数据
假的
非常感谢peter!也可以在标记中直接定义类路径。此外,应该在build.xml中定义其他ant目标,而不是build-impl.xml。要运行taks,请在Netbeans IDE的文件视图中右键单击定义的任务并选择“创建快捷方式”,以分配快捷方式。感谢您的宝贵意见。我可能会按照您的设置来改进编译时间:-)
${build.classes.dir}/META-INF/persistence.xml
ant weaving
ant dist
<persistence-unit name="MY-PU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>mydata</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
<property name="eclipselink.logging.level" value="INFO"/>
<property name="eclipselink.weaving" value="static"/>
</properties>
</persistence-unit>