The plugin inject-maven-plugin lets you inject Maven properties into your compiled code as part of your build process.
You can use the plugin to inject any properties, such as build information like build time or SCM version (provided as Maven properties by buildnumber-maven-plugin). The plugin hooks into the Maven lifecycle process-classes - so after compilation but before packaging into e.g. JAR.
Note:
- It is possible to inject into Java constants, but be aware of that the Java compiler inlines values during compilation.
- It is possible to inject into Java class attribute fields, but be aware the Java compiler inlines initialization into constructor, resulting in multiple initializations with last initialization wining.
- Preferred injection is into accessor methods, resulting in the least amount of surprise by compiler/JVM initialization specifics :-)
- The plugin uses ByteBuddy byte code injection library
- Check injection, e.g. using the Java Class File Disassembler (javap) on the target class:
javap -p -constants -c -s -cp ./target/it/inject/target/classes de.m3y.maven.inject.it.ExampleInjection
Check out the plugin website including usage for details.
- Maven 3.9 or higher
- Java 8 or higher
-
Build the plugin
mvn clean install
Make sure you got Maven 3.9+ or higher.
-
Build the site
mvn clean site site:stage scm-publish:publish-scm -Psite
-
Release
mvn release:prepare -Prelease mvn release:perform -Prelease
-
Deploy snapshot
mvn clean deploy -Prelease
Note: The release profile contains the snapshot repository for distribution management