2009-06-19 4 views
4

J'ai récemment ajouté la capacité de création de snapshots Maven à un projet, configuré pour utiliser une version d'horodatage unique sur l'artefact déployé. Mais il y a une certaine confusion quant à savoir si c'est la bonne chose à faire (les instantanés en question sont déployés dans l'un des repos publics, pas seulement dans une entité comme une entreprise): certains disent que cela cause des problèmes d'utilisation des instantanés. Donc, étant donné la quantité de Maven basée sur les conventions, et suivant les meilleures pratiques perçues, j'espère qu'il y a quelques directives quant à l'option à choisir. (NOTE: J'ai légèrement modifié le titre - Je suis particulièrement intéressé par les avantages (ou l'absence) d'inclure l'horodatage unique, via l'option de déploiement, pour les versions d'instantanés publics, et non pas si utiliser des horodatages s'ils sont inclus, bien que ce soit évidemment une question connexe)Meilleures pratiques Maven: y compris les horodatages pour les versions instantanées ou non?

Répondre

0

Le but d'un instantané est de laisser quelqu'un utiliser la dernière version du code. Pourquoi voudriez-vous utiliser un instantané de cinq versions? Avec cela à l'esprit, qu'est-ce que les horodateurs du nom d'artefact vous achètent? J'ai utilisé Maven depuis environ 5 ans maintenant. Je n'ai jamais vu un instantané avec un horodatage dans le nom.

+0

Merci! Je ne sais pas les intentions originales de cette option, mais je pense était timestamp pourrait servir l'un des 2 intentions: * Allow reproductible construit (Instante spécifique de l'instantané) * Assurez-vous que la dernière version est utilisée, indépendamment de la mise en cache ou détails de la synchronisation inter-repo (puisque le nom de l'artefact snapshot change, il est (r) synchronisé, sans cela il semble y avoir quelques problèmes) Mais la raison pour laquelle j'ai demandé était: je ne sais pas si ceux-ci sont considérés valides. :-) Je viens de voir l'option et j'ai vu certains projets (comme Enunciate) utiliser des horodatages pour leurs instantanés. – StaxMan

+0

Vous voudrez peut-être utiliser un instantané de cinq versions parce que c'est ce que vous avez testé. Parfois, vous avez besoin de quelque chose de plus récent que la dernière version (par exemple, en raison d'une nouvelle fonctionnalité), mais la prochaine version n'est pas due à temps. Donc, vous choisissez un instantané et le tester. – derobert

1

En règle générale, vous devriez toujours construire avec la dépendance -SNAPSHOT. Cependant, vous devriez éviter de libérer votre produit s'il inclut des dépendances -SNAPSHOT. Si vous utilisez le Maven Release Plug-in pour automatiser votre version, elle vérifiera que vous n'utilisez pas les plug-ins de version ou les dépendances.

Mais ce n'est pas toujours possible. Dans les cas où j'ai besoin de publier quelque chose basé sur une construction de snapshot, c'est quand j'utilise le numéro d'horodatage/build explicite plutôt que le schéma de nommage de la version -SNAPSHOT. Vous pouvez automatiser cela en utilisant le Versions Maven Plugin. Il fournit des objectifs pour verrouiller et déverrouiller des versions d'instantanés dans votre POM.

+0

Merci. Dans mon cas, je publie des instantanés, pas tellement en les utilisant (au moins pour les besoins de cette question). Mais cela aide: sans horodatage dans repo, vous ne pouvez pas déclarer les dépendances qui les utiliseraient. Donc, ce serait une raison pour inclure des horodatages. – StaxMan

Questions connexes