4

個々のフィールドの遅延読み込みを有効にするには、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プラグインが実行されることはありません。どんな助けでも大歓迎です。

4

1 に答える 1

6

どうやら、問題はantrunプラグインの設定がpluginManagementセクションではなくセクションにあるという事実にありますplugins。これらの2つのセクションの違いは、ここでの私の回答で確認できます。

<build> -> <plugins>これを機能させるには、これをpom.xmlのセクションに移動する必要があります。

于 2012-12-19T20:38:53.657 に答える