Я работаю над проектом веб-сервисов на C # .NET, который использует Maven с NPanday. Мы также хотим использовать плагин релиза, но я обнаружил небольшую проблему с версиями.
NPanday (удобно) обновит файл AssemblyInfo.cs
с номером версии из файла POM, когда вы делаете сборку, но он не фиксирует это изменение в SVN (и я не обязательно этого хочу).
Плагин релиза не знает о AssemblyInfo.cs
(и я не ожидал бы этого). Но это означает, что мои версии AssemblyInfo.cs и POM не синхронизируются во время операций выпуска.
Например, скажем, я делаю mvn release:branch
, чтобы создать ветку 2.0.x из транка. POM и AssemblyInfo.cs
были, вероятно, оба на 2.0.0-SNAPSHOT в магистрали до ветвления, поэтому ветвление выглядит так, как я и ожидал. Но в обновленной магистрали версия POM была обновлена (например, 2.1.0-SNAPSHOT), но AssemblyInfo.cs по-прежнему находится на 2.0.0-SNAPSHOT.
Это не огромная проблема, потому что следующий mvn compile
на стволе обновит AssemblyInfo.cs
, и кто-то его зафиксирует. Но с release:prepare
хуже, потому что тег, созданный из ветви, имеет правильную версию в POM (например, 2.0.0), но AssemblyInfo.cs
все еще говорит -SNAPSHOT. Когда будет запущен release: execute, NPanday обновит файл AssemblyInfo.cs
, но затем из этого тега появится плавающая модификация.
Кто-нибудь знает способ исправить это с помощью плагина релиза? Я, конечно, мог бы создать правильные ветки / теги вручную или написать собственный инструмент. Или я мог бы просто оставить все как есть, сказав, что «файл AssemblyInfo.cs не является окончательным источником версии, а POM есть». Но я бы предпочел лучшее из обоих миров.