Когда я получаю отчет об ошибке или сообщение "Это не работает", я всегда задаю вопрос о том, какая версия? Поскольку разные сборки находятся на многих этапах тестирования, планирования и развертывания, это часто нетривиальный вопрос.
В случае выпуска файлов Java JAR (ear, jar, rar, war) я хотел бы иметь возможность просматривать / просматривать JAR и переключаться на ту же ветку, версию или тег, которые были источником выпущенного JAR.
Как мне лучше всего настроить процесс сборки ant, чтобы информация о версии в svn checkout оставалась в созданной сборке?
Я думал примерно так:
- добавление файла ВЕРСИИ, но с каким содержанием?
- хранить информацию в файле META-INF, но под каким свойством и каким содержимым?
- копирование исходников в архив результатов
- добавлены свойства svn: для всех источников с ключевыми словами в тех местах, где компилятор оставляет их.
В итоге я использовал подход svnversion (принятый anwser), потому что он сканирует все поддерево, а не svn info, который просто просматривает текущий файл / каталог. Для этого я определил задачу 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>
Не все сборки приводят к появлению веб-сервисов. Уха-файл перед развертыванием должен оставаться с тем же именем из-за обновления на сервере приложений. Создание исполняемого файла по-прежнему возможно, но до тех пор я просто включаю файл с информацией о версии.
<target name="version">
<svn><wcVersion path="${dir.source}"/></svn>
<echo file="${dir.build}/VERSION">${revision.range}</echo>
</target>
Ссылки:
svnrevision: http://svnbook.red-bean.com/en/1.1/re57.html
svn info http://svnbook.red-bean.com/en/1.1/re13.html
subclipse svn task: http://subclipse.tigris.org/svnant/svn.html
svn-клиент: http://svnkit.com/