個々のフィールドの遅延読み込みを有効にするには、Mavenantrunプラグインを使用してHibernateバイトコードインストルメンテーションをJavaクラスの1つに追加する必要があります。ただし、ビルドサイクル中にプラグインを実行できません。
コンパイル後、ビルド中にパッケージ化する前にantrunプラグインを実行するようにMavenに指示するにはどうすればよいmvn package
ですか?
現在のpom.xml(スニペット):
<pluginManagement>
<plugins>
...
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<inherited>false</inherited>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<target>
<echo message="Running instrumentation task"/>
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<path refid="maven.dependency.classpath" />
<path refid="maven.plugin.classpath" />
</classpath>
</taskdef>
<instrument verbose="true">
<fileset dir="target/classes">
<include name="**/UploadedFile.class" />
</fileset>
</instrument>
</target>
</configuration>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
</pluginManagement>
この問題に関して私が見たすべてのドキュメントは、「プロセスクラス」フェーズ中に実行するように構成されているプラグインを示しています。ただし、Mavenドキュメントからは、「プロセスクラス」フェーズがのビルドサイクルの一部であるようには見えませんpackage
。を使用してプラグインを単独で実行できますがmvn antrun:run
、最終的にはmvn package
デプロイ用の.warファイルを作成する必要があるため、変更されたクラスを配置するには、このプラグインをパッケージタスク内のどこかで実行する必要があると確信しています。パッケージ化された.warに。
私は上記のコードの多くのバリエーション(フェーズの変更、での変更、プラグインのバージョンの更新、IDの変更など)を試しましたが、知覚できる変更はありませんでした。mvn
可能なすべての出力を表示するために実行してきまし-e -X
たが、何を試してもantrunプラグインが実行されることはありません。どんな助けでも大歓迎です。