Maven 插件而不是 Byte Buddy 的 javaagent?
Maven plugin instead of javaagent for Byte Buddy?
能否有一个maven插件代替javaagent来减少应用程序的启动时间?许多 ORM 工具都有 javaagent 和 maven 插件,所以它应该是可能的 - 是吗?或者至少类似于 "CompiledClassFilesBuilder" 在功能上类似于 AgentBuilder :-)
此致,
帕维尔
完全可以在 Maven 插件中使用 Byte Buddy。您可以在编译阶段之后为 Maven 目标实现一个 ClassFileLocator,并使用 ByteBuddy 实例在此文件夹中重新定义 类。 API 与转换器内部的 AgentBuilder 相同。
不过,您需要实现这样的插件。当前存在 none 个。
但是请注意,此静态转换有其局限性。使用插件,无法重新定义 VM 的 bootstrap 类。更改库 类 也很困难,因为它们是外部工件。最后,字节好友可以注册需要在运行时设置的实时回调。
更新:我刚刚添加了有问题的插件,并将在版本 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>
两个相关接口Plugin
和EntryPoint
直接添加到库中,可以直接实现。
能否有一个maven插件代替javaagent来减少应用程序的启动时间?许多 ORM 工具都有 javaagent 和 maven 插件,所以它应该是可能的 - 是吗?或者至少类似于 "CompiledClassFilesBuilder" 在功能上类似于 AgentBuilder :-)
此致, 帕维尔
完全可以在 Maven 插件中使用 Byte Buddy。您可以在编译阶段之后为 Maven 目标实现一个 ClassFileLocator,并使用 ByteBuddy 实例在此文件夹中重新定义 类。 API 与转换器内部的 AgentBuilder 相同。
不过,您需要实现这样的插件。当前存在 none 个。
但是请注意,此静态转换有其局限性。使用插件,无法重新定义 VM 的 bootstrap 类。更改库 类 也很困难,因为它们是外部工件。最后,字节好友可以注册需要在运行时设置的实时回调。
更新:我刚刚添加了有问题的插件,并将在版本 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>
两个相关接口Plugin
和EntryPoint
直接添加到库中,可以直接实现。