Mavenプロジェクトのエンティティに対してHibernateインストルメンテーションを有効にしようとしています。インストルメンテーションは、Java API(String、BigDecimalなど)によって定義された標準タイプのフィールドのみを持つエンティティで正常に機能するようですが、インストルメンテーションタスクが、プロジェクト内の他のクラスによって定義されたタイプのフィールドを持つクラスで機能しようとすると、次のエラーで失敗します。
[instrument] processing class : com.test.entity.EntityWithCustomTypes; file = C:\Project\Project-ejb\target\classes\com\test\entity\EntityWithCustomTypes.class
Mar 21, 2013 10:00:24 AM org.hibernate.bytecode.internal.javassist.JavassistClassTransformer doTransform
ERROR: HHH000373: Unable to transform class: cannot find com.test.bo.CustomType
CustomTypeクラスを意図的にインストルメント化しようとしました(これは必要ではないはずです)。インストルメンテーションはそれを処理しますが、それでもEntityWithCustomTypesでエラーが発生します。
これが私のpom.xmlで使用しているプラグインです。プロジェクトはJBoss7Java EEアーキタイプを使用して生成され、EJBモジュールPOMでインストルメンテーションを実行しようとしています。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<configuration>
<tasks>
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<path refid="maven.dependency.classpath" />
<path refid="maven.compile.classpath" />
<path refid="maven.runtime.classpath" />
<path refid="maven.plugin.classpath" />
<dirset dir="${project.build.outputDirectory}" />
</classpath>
</taskdef>
<instrument verbose="false">
<fileset dir="${project.build.outputDirectory}">
<include name="**/entity/*.class" />
</fileset>
</instrument>
</tasks>
</configuration>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.10.Final</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
</dependencies>
</plugin>
コンパイルフェーズで問題のクラス(CustomType)が生成されていることを確認できるため、HibernateのJavassistClassTransformerがそれを見つけられない理由がわかりません。