Howdy, This mail is just a general response (initiated by those asking me in private): it seems that the Maven team "forgot" to emphasize an important question on the Maven site, while it is becoming more and more pressing, especially as Java 17 is out long time ago, and Java 21 is here as well.
In short: if you develop Java Mojo (a Maven plugin), that you plan to use with current "stable" Maven versions (3.9.x and maybe 3.8,x), your maven-plugin packaged artifact MUST NOT use Java bytecode that is newer than Java 14! What happens is that Eclipse Sisu is unable to inspect the component class/bytecode 14+ in question (despite is listed on index, in META-INF/sisu/javax.inject.Named file), and it will silently ignore the component, "pretend" like it's absent (and error reported will be like Guice does not find the component to be injected). This can be seen, if you make Sisu DEBUG (-Dsisu.debug on maven cli). Cause of limitation is the version of Eclipse Sisu used in Maven (the JSR330 container implementation Maven uses internally), see https://github.com/eclipse/sisu.inject/issues/94. Eclipse Sisu versions 0.3.5 (used in Maven 3.8.x and 3.9.x) uses ASM that is able to scan bytecode only up to Java 14. Latest release 0.9.0.M2 (used in Maven4) is covering this up to Java21, while this issue above should fully cover, and will probably be updated in Maven4 once released. So, for plugin devs targeting Maven3, best is to not exceed Java 14 (safest Java11) bytecode version for components (Mojos and JSR330 components). HTH Tamas