Je suis en quelque sorte confus quant à l’annotation de champs dans mon maven mojo. Par exemple, pour avoir récupéré le MavenProject
par exemple le code ressemblerait à ceci
/**
* @property property="${project}"
* @readonly
* @required
*/
private MavenProject project;
ou il pourrait ressembler à ceci (fait la même chose)
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
Vous pouvez même combiner les deux variantes, ce qui fonctionne également.
- Quelle est exactement la différence entre ces variantes?
- L'une des méthodes est-elle obsolète / obsolète? Quel est le moyen préféré?
- Variante "javadoc": Quel est l'intérêt de coder la logique de programme en commentaire?
Réponses:
2 pour la réponse № 1La variante Javadoc est l'ancienne méthode permettant de spécifier les informations devant figurer dans le descripteur plugin.xml. Les annotations Java n'ont été introduites que dans Java 5.
le Proposition pour Java 5 Annotations pour les MOJO décrit certains des avantages de l’utilisation des annotations sur les balises Javadoc:
L’utilisation d’annotations java 5 au lieu d’annotations javadoc présente de nombreux avantages:
- vérifie au moment de la compilation les métadonnées du plugin, avec des énumérations pour certaines annotations
- support d'héritage
- Les annotations sont prises en charge dans la plupart des IDE, fournissant ainsi des vérifications de complétion de code et de syntaxe.
De plus, le documentation du plugin maven-plugin mentionne qu'il est possible d'avoir des super-classes MOJO dans différents projets et que leur code source n'a pas besoin d'être disponible.
Quelle méthode utiliser?
J'utiliserais les annotations Java 5 pour les raisons mentionnées ci-dessus et également pour le point que vous avez soulevé dans votre troisième question: la logique du programme ne doit pas être codée dans un commentaire.