Refactoring eines Maven-Plugins mit Dependency Injection

Das hier erstellt Maven-Plugin, kann noch etwas refactored werden mit Nutzung von Dependency Injection.

Always rejoice, mit freundlicher Genehmigung meines Lieblingskünstlers

Die Methode im Mojo kann in eine eigene Klasse CommandProviderApi verschoben werden. Ein neues Interface CommandProvider kann erstellt werden. Die erstellen wir hier:

1. Das Interface:

2. Die Implementierung des Interface:

Wichtig sind die beiden neuen Annotationen @Named und @Singleton an der Klasse.

3. Die Methode im CommandMojo löschen und die Klasse Injecten:

@Inject
private CommandProvider commandProvider;

Und verwenden:

String commandoErgebnis = commandProvider.getCommand(command);

Die ganze Klasse sieht dann so aus:

Super sie enthält nur noch das Plugin.

4. Test

de.wenzlaff.command.maven.plugin % mvn de.wenzlaff.command.maven.plugin:de.wenzlaff.command.maven.plugin:info -Dcommand=“ls“

Ok, funktioniert so wie vorher.