It записки maven і mercurial

Захотілося для Maven проекту, розміщеного в різних місцях і з різними білд, знати точну версію у вигляді changeset'a зі сховищ Mercurial.

Нижче швидке, просте (без scm плагіна) і не дуже гнучке рішення у вигляді шматків pom.xml.







  1. Підключили плагін buildnumber-maven-plugin
  2. Опція doCheck потрібна для перевірки на наявність локальних незафіксованих змін в проекті. Ми ж хочемо, щоб зміна версії було жорстко прив'язане до коммітов.
  3. Як я зрозумів, doUpdate потрібен для SVN, щоб при складанні проекту у нас локально були найсвіжіші зміни (в документації описано погано). По-моєму це взагалі має сенс тільки для централізованої VCS, так що відключаємо цей пункт.
  4. Поле format відповідає за формат змінної $. в яку і записується версія. 0-е поле має спеціальний формат для дати і йому передається спеціальний item. повертає час на момент складання; замість 1-го поля підставляється змінна $. яка з'являється в результаті роботи мети hgchangeset. Також hgchangeset створює змінну changeSetDate з датою changeset'а.






Тепер в змінній $ у нас є готова версія, яку потрібно кудись покласти для подальшого вживання в додатку. Логічним місцем для цього є маніфест архіву. У моєму випадку це був .war. Відповідно, настройка war-плагіна:

З такими настройками в каталозі META-INF з'являється файл MANIFEST.MF приблизно такого змісту: