MapStruct generates code at compile-time and it should not require any runtime dependencies:
How is MapStruct different from other bean mapping tools?
Unlike most other bean mapping tools, MapStruct doesn’t work at runtime but is a compile-time code generator.
Generating mapping code at build time has many advantages:
- Excellent performance, as no reflection or byte code generation at runtime is needed; the generated code contains plain method invocations, just as if the mapper was hand-written
- No runtime dependencies, making MapStruct a great solution for Android applications
Which dependency scope should be used in a Maven project? Should MapStruct be included as a provided dependency?
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>