При получении сообщения об ошибке или сообщения "не работает" один из моих начальных вопросов всегда имеет какую версию? Поскольку различные сборки находятся на многих этапах тестирования, планирование и развертывание часто являются нетривиальным вопросом.
В случае выпуска файлов Java JAR (ear, jar, rar, war), я хотел бы иметь возможность просматривать / находить JAR и переключаться на ту же ветку, версию или тег, который был источником выпущенного JAR.
Как наилучшим образом настроить процесс сборки ant, чтобы информация о версии из проверки svn оставалась в созданной сборке?
Я думал так:
- добавление файла VERSION, но с каким содержимым?
- хранение информации в файле META-INF, но под каким свойством и каким содержимым?
- копирование источников в архив результатов
- добавил svn: свойства ко всем источникам с ключевыми словами в местах, где компилятор оставляет их равными
В итоге я использовал подход svnversion (принятый anwser), потому что он сканирует все поддерево, а не информацию svn, которая просто просматривает текущий файл / каталог. Для этого я определил задачу SVN в файле ant, чтобы сделать ее более переносимой.
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask">
<classpath>
<pathelement location="${dir.lib}/ant/svnant.jar"/>
<pathelement location="${dir.lib}/ant/svnClientAdapter.jar"/>
<pathelement location="${dir.lib}/ant/svnkit.jar"/>
<pathelement location="${dir.lib}/ant/svnjavahl.jar"/>
</classpath>
</taskdef>
Не все сборки приводят к веб-сервисам. Файл ear перед развертыванием должен оставаться с тем же именем из-за обновления на сервере приложений. Сделать исполняемый файл все еще можно, но до тех пор я просто включаю файл информации о версии.
<target name="version">
<svn><wcVersion path="${dir.source}"/></svn>
<echo file="${dir.build}/VERSION">${revision.range}</echo>
</target>
Refs:
svnrevision: http://svnbook.red -bean.com / ru / 1.1 / re57.html
svn info http://svnbook.red -bean.com / ru / 1.1 / re13.html
Подклипс SVN задача: http://subclipse.tigris.org/svnant/svn.html
SVN-клиент: http://svnkit.com/