Fonctionnent les annotations du plexus dans un plugin Maven?
-
25-10-2019 - |
Question
Je travaille sur un plugin maven personnalisée et je suis en train d'utiliser les annotations Plexus pour l'injection de dépendance comme indiqué sur le Sonotype blog.
J'ai un champ défini dans mon mojo:
/**
*/
@Requirement(hint = "rhino")
private RhinoRunner rhinoRunner;
Et la classe définie avec l'annotation @Component
:
/**
*/
@Component(role = RhinoRunner.class, hint = "rhino")
public class RhinoRunnerImpl implements RhinoRunner {
J'ai ensuite ajouté la configuration à la components.xml. Lorsque j'utilise le plugin le champ rhinoRunner
est nul. Si je change d'utiliser l'ancien taglet javadoc sur la dépendance, comme suit, il fonctionne correctement:
/**
* @component
*/
private RhinoRunner rhinoRunner;
Est-il possible de faire le travail du Java5?
La solution
Les annotations du plugin diffèrent des annotations du plexus (bien que les annotations du plugin arrive d'utiliser le même mécanisme pour satisfaire à une exigence).
Vous devez continuer à utiliser les annotations de plug-in dans un Mojo, mais ne hésitez pas à utiliser l'autre annotation dans les composants purs (dans le plug-in ou toutes les bibliothèques de support).