是否可以使用maven插件而不是javaagent来减少应用程序的启动时间?许多ORM工具都有javaagent和maven插件,所以它应该是可能的 - 是吗?或者至少类似“CompiledClassFilesBuilder”的功能类似于AgentBuilder: - )
此致 帕维尔
答案 0 :(得分:3)
完全可以在Maven插件中使用Byte Buddy。您可以在编译阶段后为Maven目标实现ClassFileLocator,并使用ByteBuddy实例重新定义此文件夹中的类。 API与变换器内的AgentBuilder相同。
但是,您需要实现这样的插件。目前没有。
但请注意,此静态转换有其局限性。使用插件,无法重新定义VM的引导类。更改库类也很困难,因为它们是外部工件。最后,Byte Buddy可以注册需要设置为wt runtime的实时回调。
更新:我刚刚添加了有问题的插件,并将在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
直接添加到库中,并且可以直接实现。