Управление версиями с помощью NPanday и плагина Maven Release - PullRequest
1 голос
/ 15 июля 2011

Я работаю над проектом веб-сервисов на 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 есть». Но я бы предпочел лучшее из обоих миров.

1 Ответ

0 голосов
/ 28 июня 2012

Я бы позволил NPanday сгенерировать AssemblyInfo.cs для вас - тогда вы не будете проверять вещи с версиями в нем ...

Visual Studio будет нормально работать без информации о сборке ... Версия 0.0.0.0, затем :-) - Я делаю это таким образом.

На самом деле NPanday «нарушает» правила maven - сборка никогда не должна возиться с оригинальными файлами, а скорее просто обновлять вещи в /target...

...