Может ли аннотация Java сделать это? - PullRequest
3 голосов
/ 20 мая 2009

Я ищу решение, которое отображает номер редакции subversion и дату последней модификации в моем приложении (написано в GWT, поэтому отражение недоступно). Кодировать ревизию в ключевом слове subversion не работает, поскольку она применяется только к текущему файлу. Есть ли лучшее решение с использованием аннотации? (например, отдельный класс, который выполняется во время компиляции, захватывает последнюю версию # всего проекта и вводит версию и дату последней модификации в исходный код)

Ответы [ 3 ]

2 голосов
/ 30 мая 2009

Аннотации не предназначены для этого. Проще всего сделать это как часть сборки.

Используя Ant, вы можете сгенерировать файл, содержащий информацию о версии, включить его в JAR-файл вашего приложения, загрузить его в качестве ресурса на сервер и передать RPC в код на стороне браузера. При копировании Ant может также выполнять замену строк в файлах, которые вы можете использовать для включения номера версии в файлы HTML вашего приложения (тогда RPC не нужен).

Понятия не имею о Maven, но я был бы очень удивлен, если бы он не мог сделать то же самое.

2 голосов
/ 20 мая 2009

Я знаю

@SvnRevision("$Id$")
public class Foo {
}

Тогда все ваши классы будут помечены своей версией. Вы должны убедиться, что аннотация определена как имеющая время хранения, чтобы ее можно было запрашивать во время выполнения.

EDIT

Хорошо, так как в SVN такой функции нет, я бы написал плагин Maven для его эмуляции. Maven имеет доступ к информации SCM для каждого файла, поэтому на этапе сборки вы можете сделать то же самое расширение ключевого слова.

0 голосов
/ 27 октября 2009

Subversion по-прежнему имеет функцию $ Id $, но ее необходимо явно включить, используя свойство svn: Keywords для файлов (установите его в 'Id').

См. Также: http://svnbook.red -bean.com / ru / 1.5 / svn.advanced.props.special.keywords.html

Так что идея Jherico, описанная выше с @SvnRevision, сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...