アプリケーションの起動時間を短縮するために、javaagent の代わりに Maven プラグインを使用できますか? 多くの ORM ツールには javaagent と maven プラグインの両方が含まれているため、可能であるはずです。または、少なくとも「CompiledClassFilesBuilder」のようなもので、AgentBuilder と機能が似ています :-)
よろしく、パベル
アプリケーションの起動時間を短縮するために、javaagent の代わりに Maven プラグインを使用できますか? 多くの ORM ツールには javaagent と maven プラグインの両方が含まれているため、可能であるはずです。または、少なくとも「CompiledClassFilesBuilder」のようなもので、AgentBuilder と機能が似ています :-)
よろしく、パベル
Maven プラグイン内から Byte Buddy を使用することは完全に可能です。コンパイル段階の後に Maven ターゲットの ClassFileLocator を実装し、ByteBuddy インスタンスを使用してこのフォルダー内のクラスを再定義できます。API は、トランスフォーマー内の AgentBuilder の API と同じです。
ただし、そのようなプラグインを実装する必要があります。現在存在するものはありません。
ただし、この静的変換には制限があることに注意してください。プラグインを使用して、VM のブートストラップ クラスを再定義することはできません。ライブラリ クラスは外部アーティファクトであるため、変更することも困難です。最後に、Byte Buddy は、wt ランタイムを設定する必要があるライブ コールバックを登録できます。
更新: 問題のプラグインを追加したところ、バージョン 1.4.21 で Maven Byte Buddy プラグインをリリースします。変換は次のように追加できます。
<plugin>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformations>
<transformation>
<plugin>net.bytebuddy.test.SimplePlugin</plugin>
<!-- Optionally, specify groupId, artifactId, version of the class -->
</transformation>
</transformations>
<!-- Optionally, add 'initialization' block with EntryPoint class -->
</configuration>
</plugin>
関連する 2 つのインターフェイスPlugin
とEntryPoint
は、ライブラリに直接追加され、簡単に実装できます。