При получении отчета об ошибке или сообщения о неработающем сообщении один из моих начальных вопросов - это всегда какая версия? Поскольку разные сборки находятся на многих этапах тестирования, планирование и развертывание этого часто является нетривиальным вопросом.Как лучше хранить информацию о версии Subversion в EAR?
В случае выпуска Java JAR (уха, jar, rar, war) файлы, я хотел бы иметь возможность посмотреть в/в JAR и переключиться на ту же ветку, версию или тег, которые были источником выпущен JAR.
Как я могу лучше всего настроить процесс сборки муравьев так, чтобы информация о версии в 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>
Refs:
svnrevision: http://svnbook.red-bean.com/en/1.1/re57.html
СВН Информация http://svnbook.red-bean.com/en/1.1/re13.html
Subclipse задачи Svn: http://subclipse.tigris.org/svnant/svn.html
СВН клиента: http://svnkit.com/
I SvnTask более портативный, чем работающий «svnversion», как в принятом ответе? –