58 votes

Comment obtenir la MavenSession ou la MavenExecutionRequest actuelle d'un composant Plexus ?

J'ai créé un composant Plexus pour héberger la logique commune à plusieurs Mojos que je veux créer. J'ai pu passer des informations comme localRepository et le projet du Mojo (et les cas de test).

Je me demandais s'il y avait un moyen d'obtenir le nom de l'entreprise. MavenSession o MavenExecutionRequest à partir du composant sans avoir à les passer comme paramètres à partir d'un Mojo. Je sais que mon composant sera exécuté à partir d'un Mojo Maven.

J'utilise Maven 2 dans ce cas.

1voto

Teh Hippo Points 691

Je ne crois pas que ce soit le cas, et je ne pense pas que ce soit une bonne idée.

D'après ce que j'ai compris, votre objectif est d'avoir un composant commun qui sera utilisé pour plusieurs mojos. Cela nécessite que la session Maven actuelle soit transmise et utilisée pour renvoyer ensuite une valeur.

Cependant, la façon dont Maven fonctionne est qu'il exécute les objectifs des plugins dans un environnement presque semblable à un conteneur. Chaque plugin est autorisé à agir à l'intérieur d'un domaine particulier. Phase Maven tel que défini par le <executions /> . Cela permet à Maven de séparer les complexités de la construction, du test, de la vérification, du déploiement etc. etc. Appeler mvn clean install sauf erreur de ma part, il s'agit de deux exécutions séparées, l'une pour exécuter le clean le cycle de vie de la construction suivi par le install .

Il n'est donc pas sûr de supposer que le MavenSession et suivants MavenExecutionRequest représentent la même instance utilisée lors d'un appel précédent. clean est un appel distinct, dont la logique ne doit pas être maintenue dans une nouvelle session.

Donc, ce que je dis essentiellement, c'est que si avoir un composant plexus commun est une bonne pratique, en particulier pour maintenir la cohérence entre vos mojos, c'est une pratique correcte (presque ioc ), afin de fournir la session appropriée à chaque fois.

J'espère que c'est la réponse que vous cherchez. C'est plutôt long, mais pour comprendre pourquoi vous devez fournir la session, pensez à ce qui suit Maven .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X