Es ist durchaus möglich Byte Buddy zu verwenden aus einem Maven Plugin. Sie können einen ClassFileLocator für das Maven-Ziel nach der Kompilierungsphase implementieren und die Klassen in diesem Ordner mithilfe einer ByteBuddy-Instanz neu definieren. Die API ist identisch mit der des AgentBuilders in einem Transformer.
Sie müssten jedoch ein solches Plugin implementieren. Derzeit gibt es keine.
Beachten Sie jedoch, dass diese statische Transformation ihre Grenzen hat. Mit einem Plugin ist es nicht möglich Bootstrap-Klassen der VM neu zu definieren. Es wäre auch schwierig, Bibliotheksklassen zu ändern, da es sich um externe Artefakte handelt. Schließlich kann Byte Buddy Live-Callbacks registrieren, die wt Runtime gesetzt werden müssen.
UPDATE: Ich habe gerade das Plugin in Frage gestellt und werde ein Maven Byte Buddy Plugin in der Version 1.4.21 veröffentlichen. Eine Transformation kann wie folgt hinzugefügt werden:
<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>
Die beiden relevanten Schnittstellen Plugin
und EntryPoint
werden zur Bibliothek hinzugefügt direkt und geradlinig zu implementieren.