Class ByteBuddyMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- net.bytebuddy.build.maven.ByteBuddyMojo
-
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
- Direct Known Subclasses:
ByteBuddyMojo.ForProductionTypes
,ByteBuddyMojo.ForTestTypes
public abstract class ByteBuddyMojo extends org.apache.maven.plugin.AbstractMojo
A Maven plugin for applying Byte Buddy transformations during a build.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ByteBuddyMojo.ForProductionTypes
A Byte Buddy plugin that transforms a project's production class files.static class
ByteBuddyMojo.ForTestTypes
A Byte Buddy plugin that transforms a project's test class files.protected static class
ByteBuddyMojo.MavenBuildLogger
ABuildLogger
implementation for a MavenLog
.protected static class
ByteBuddyMojo.TransformationLogger
APlugin.Engine.Listener
that logs several relevant events during the build.
-
Field Summary
Fields Modifier and Type Field Description String
artifactId
The built project's artifact id.boolean
extendedParsing
When set totrue
, the debug information of class files should be parsed to extract parameter names.boolean
failFast
When set totrue
, this mojo fails immediately if a plugin cannot be applied.boolean
failOnLiveInitializer
When transforming classes during build time, it is not possible to apply any transformations which require a class in its loaded state.String
groupId
The built project's group id.Initialization
initialization
The initializer used for creating aByteBuddy
instance and for applying a transformation.String
packaging
The built project's packaging.org.apache.maven.project.MavenProject
project
The Maven project.List<org.eclipse.aether.repository.RemoteRepository>
remoteRepositories
A list of all remote repositories.org.eclipse.aether.RepositorySystem
repositorySystem
The currently used repository system.org.eclipse.aether.RepositorySystemSession
repositorySystemSession
The currently used system session for the repository system.boolean
skip
When set totrue
, this mojo is not applied to the current module.String
suffix
Specifies the method name suffix that is used when type's method need to be rebased.int
threads
Indicates the amount of threads used for parallel type processing or0
for serial processing.List<Transformation>
transformations
The list of transformations.String
version
The built project's version.boolean
warnOnEmptyTypeSet
When set totrue
, this mojo warns of not having transformed any types.boolean
warnOnMissingOutputDirectory
When set totrue
, this mojo warns of an non-existent output directory.
-
Constructor Summary
Constructors Constructor Description ByteBuddyMojo()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
execute()
protected abstract List<String>
getClassPathElements()
Returns the class path elements of the relevant output directory.protected abstract String
getOutputDirectory()
Returns the output directory to search for class files.
-
-
-
Field Detail
-
groupId
@Parameter(defaultValue="${project.groupId}", required=true, readonly=true) public String groupId
The built project's group id.
-
artifactId
@Parameter(defaultValue="${project.artifactId}", required=true, readonly=true) public String artifactId
The built project's artifact id.
-
version
@Parameter(defaultValue="${project.version}", required=true, readonly=true) public String version
The built project's version.
-
packaging
@Parameter(defaultValue="${project.packaging}", required=true, readonly=true) public String packaging
The built project's packaging.
-
project
@Parameter(defaultValue="${project}", readonly=true) public org.apache.maven.project.MavenProject project
The Maven project.
-
transformations
@Parameter public List<Transformation> transformations
The list of transformations. A transformation must specify the
plugin
property, containing the name of a class to apply. Additionally, it is possible to optionally specify Maven coordinates for a project that contains this plugin class asgroupId
,artifactId
andversion
. If any of the latter properties is not set, this projects coordinate is used.For example, the following configuration applies the
foo.Bar
class which must implementPlugin
from artifacttransform-artifact
with this project's group and version:<transformations> <transformation> <plugin>foo.Bar< /plugin> <artifactId>transform-artifact< /artifactId> < /transformation> < /transformations>
If the list of
transformations
is empty or is not supplied at all, this plugin does not apply but prints a warning.
-
initialization
@Parameter public Initialization initialization
The initializer used for creating a
ByteBuddy
instance and for applying a transformation. By default, a type is rebased. The initializer'sentryPoint
property can be set to any constant name ofEntryPoint.Default
or to a class name. If the latter applies, it is possible to set Maven coordinates for a Maven plugin which defines this class where any property defaults to this project's coordinates.For example, the following configuration applies the
foo.Qux
class which must implementEntryPoint
from artifactinitialization-artifact
with this project's group and version:<initialization> <entryPoint>foo.Qux< /entryPoint> <artifactId>initialization-artifact< /artifactId> < /initialization>
-
suffix
@Parameter public String suffix
Specifies the method name suffix that is used when type's method need to be rebased. If this property is not set or is empty, a random suffix will be appended to any rebased method. If this property is set, the supplied value is appended to the original method name.
-
failOnLiveInitializer
@Parameter(defaultValue="true", required=true) public boolean failOnLiveInitializer
When transforming classes during build time, it is not possible to apply any transformations which require a class in its loaded state. Such transformations might imply setting a type's static field to a user interceptor or similar transformations. If this property is set tofalse
, this plugin does not throw an exception if such a live initializer is defined during a transformation process.
-
skip
@Parameter(defaultValue="false", required=true) public boolean skip
When set totrue
, this mojo is not applied to the current module.
-
warnOnMissingOutputDirectory
@Parameter(defaultValue="true", required=true) public boolean warnOnMissingOutputDirectory
When set totrue
, this mojo warns of an non-existent output directory.
-
warnOnEmptyTypeSet
@Parameter(defaultValue="true", required=true) public boolean warnOnEmptyTypeSet
When set totrue
, this mojo warns of not having transformed any types.
-
failFast
@Parameter(defaultValue="true", required=true) public boolean failFast
When set totrue
, this mojo fails immediately if a plugin cannot be applied.
-
extendedParsing
@Parameter(defaultValue="false", required=true) public boolean extendedParsing
When set totrue
, the debug information of class files should be parsed to extract parameter names.
-
threads
@Parameter(defaultValue="0", required=true) public int threads
Indicates the amount of threads used for parallel type processing or0
for serial processing.
-
repositorySystem
@Component public org.eclipse.aether.RepositorySystem repositorySystem
The currently used repository system.
-
repositorySystemSession
@Parameter(defaultValue="${repositorySystemSession}", required=true, readonly=true) public org.eclipse.aether.RepositorySystemSession repositorySystemSession
The currently used system session for the repository system.
-
remoteRepositories
@Parameter(defaultValue="${project.remoteProjectRepositories}", required=true, readonly=true) public List<org.eclipse.aether.repository.RemoteRepository> remoteRepositories
A list of all remote repositories.
-
-
Method Detail
-
execute
public void execute() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoFailureException
-
getOutputDirectory
protected abstract String getOutputDirectory()
Returns the output directory to search for class files.- Returns:
- The output directory to search for class files.
-
-