Недавно мой плагин m2release привлек мое внимание. Казалось, хорошо. Несмотря на это, мне бы хотелось, чтобы процесс выпуска был полностью «без подстройки». Под этим я подразумеваю, что мы должны предоставить 4 входных параметра для обработки полной версии:
- версия выпуска (например, 1.0.0)
- новая версия разработки (например, 1.0.1-SNAPSHOT)
- тег выпуска в SCM (например, release-1.0.0 или 1.0.0)
- базовый путь тега в SCM
Первые 2 имеют приемлемые значения по умолчанию. Версия, в которой встречается цифра версии с исправленным багом, прекрасно для меня.
Номер 4 может быть указан в пом. Это не изменится.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://example.com/svn/myProject/releases</tagBase>
</configuration>
</plugin>
Это третий, который мешает мне полностью автоматизировать релиз одним нажатием кнопки. Метка выпуска релиза по умолчанию не сделает это для нас, поэтому мы должны указать ее:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tag>release-${pom.version}</tag>
<tagBase>https://example.com/svn/myProject/releases</tagBase>
</configuration>
</plugin>
Теперь, хотя это может быть как раз то, что мне нужно, в итоге у меня будет svn-тег с -SNAPSHOT в конце. :( Таким образом, я должен передать параметр tag в конфигурации задания Hudson. Кроме того, я должен изменить его для каждого выпускаемого нами релиза ... что не совсем то, что мне нужно.
Итак, в итоге, имея проект типа maven2 в hudson + плагин m2release hudson + правильно настроенный плагин maven release, это Мать всего процесса выпуска, который я видел до сих пор. Хотя это и не идеально, это спасло мне много утомительной работы.
JS.