2012-05-03 5 views
9

私はNetbeans 7.1.1とGlassfish 3.1.2サーバを使用しています。 JPAプロバイダとして、Netbeansに同梱されているeclipse-link 2.3.0を使用することに決めました。私は遅延取得を使用したいので、私のプロジェクトは約45のJPA Entityクラスで構成されており、それらの間に多くの関係があります。静的織りを使用することにしました。さらに、@Entityクラスは別々のClass Lib Projectにあり、persistence.xmlはEJBプロジェクトにあります。NetBeansでEclipse-Link JPAを使用して静的ウィービングAntタスクを適用する方法は?

私はすでにここの指示に従っ:http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

を私は(下記)ビルドimpl.xmlファイルにANTタスクを置きます。 Netbeansを使用すると正しいですか?

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

pathelementパスのすべてのjar-ファイルもNetBeans IDEでライブラリとして含まれています。ここでビルドimpl.xmlからの抜粋です。私はここで間違って作るのですか何

D:\workspace\MyProject\nbproject\build-impl.xml:703: taskdef class org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask cannot be found 
using the classloader AntClassLoader[] 

:「クリーン&ビルド」を打つとき、私は今、次のエラーを取得しますか?

答えて

4

eclipselink.jarとjavax.persistence.jarをAntクラスパスに追加する必要があります。

Netbeansでは、Tools/Options/Miscellaneous/Antに行き、そこでクラスパスを編集します。

+1

多くのおかげでピーターを! タグ内のクラスパスを直接定義することもできます。さらに、build-impl.xmlの代わりにbuild.xmlに追加のantターゲットを定義する必要があります。タスクを実行するには、Netbeans IDE内のファイルビューで定義されたタスクを右クリックしてショートカットを割り当て、「ショートカットを作成」を選択します。 – salocinx

2

私も織りもたらすためにorg.eclipse.persistence.jpa.jpql_1.0.1.jarorg.eclipse.persistence.jpa.modelgen.processor-2.3.2.jarを含める必要がありましたライブ。お役に立てれば。

3

私はTomEE 1.7.0でEclipselink 2.4.2でjava eeプロジェクトを開発するためにもNetbeans 8.0.1を使用しています。私はbuild.xmlにを入れます(私はbuild-impl.xmlを変更しません。何かがコンフィギュレーション、建物の中に変更されたとき、Netbeansのは)それを上書きすることができます。

<target name="--weaving-def" description="New task definition for EclipseLink static weaving" depends="dist"> 
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask" 
      classpath="${j2ee.platform.classpath}"> 
    </taskdef> 
</target> 
<target name="weaving" description="perform weaving" depends="--weaving-def"> 
    <weave source="${build.classes.dir}" 
      target="${build.classes.dir}" 
      loglevel="INFO"> 
     <classpath path="${j2ee.platform.classpath}:${javac.classpath}"/> 
    </weave> 
</target> 

あなたは私がすべてのNetbeansののJava EEのAntプロジェクトにのみ一般的に使用される変数を使用していることがわかります。私はすでにプロジェクトで定義されている変数だけをjarファイルに直接定義していません。

私の実装では、私は、展開されたディレクトリ構造を使用していますし、私のpersistence.xmlのが最も重要なことは、正しくクラスパスを定義することでした

${build.classes.dir}/META-INF/persistence.xml 

の下にあります。私は

ant weaving 

を実行する場合

は今、静的な織りが行われます。ビルドには約15秒かかります。そのため、開発環境ではなく、テストサーバーと本番サーバーだけで構築しています。

私は単純なファイル名を指定して実行(またはNetbeansのビルド]メニューを使用)

ant dist 

建物が織りなし、通常の結果されます。もちろん

私はこのように私の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> 
+0

すばらしいコメントMiklosをありがとう。おそらく私のコンパイル時間を改善するためにあなたの設定に従います:-) – salocinx

関連する問題