/ / Annotations contre Javadoc dans Maven Mojos - java, maven

Annotations vs. Javadoc dans Maven Mojos - java, maven

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.

  1. Quelle est exactement la différence entre ces variantes?
  2. L'une des méthodes est-elle obsolète / obsolète? Quel est le moyen préféré?
  3. Variante "javadoc": Quel est l'intérêt de coder la logique de programme en commentaire?

Réponses:

2 pour la réponse № 1

La 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.