Лучшие практики для встраивания номера версии SVN в манифест jar jar?

Я вижу такие вопросы, как Как получить номер версии из Subversion с помощью maven?, но есть ли какие-либо стандарты (фактические или иные), для каких фактических полей использовать в манифесте, для версии № и для URL-адреса репозитория (т. е. показывающих, что он находится в магистрали, а не в ветке)? Я видел, что используется версия-реализация с ведущей буквой «r» (для исправления) и без нее, я также видел, что используется реализация-сборка :.

edit Я удалил тег maven, которого там не должно было быть. Мой вопрос касается содержимого банки, а не инструментов как таковых.


person Steven R. Loomis    schedule 18.01.2012    source источник
comment
Никаких стандартов, о которых я знаю. Кажется, каждая компания / разработчик имеет свое мнение о том, как управлять номерами ревизий, не говоря уже о том, как записывать и описывать эту ревизию :-)   -  person Mark O'Connor    schedule 18.01.2012
comment
Вы можете рассмотреть возможность использования файла, отличного от манифеста (или, по крайней мере, в дополнение к нему), если вы когда-нибудь захотите прочитать номер версии программно. Чтение MANIFEST.MF изнутри JVM на самом деле довольно болезненно и может быть несовместимым от одной среды к другой, если иерархия загрузчика классов вообще изменится.   -  person Mike Deck    schedule 19.01.2012
comment
см. также: stackoverflow.com/questions/7670602/   -  person Steven R. Loomis    schedule 19.01.2012
comment
ха, рад, что это популярный вопрос. Теперь мне просто нужно заняться этим сам.   -  person Steven R. Loomis    schedule 25.09.2013


Ответы (1)


К сожалению, для jar-манифестов нет стандарта нумерации версий.

Но, на самом деле, есть еще один стандартный способ автоматического обновления номера ревизии. Вы можете использовать svn: ключевые слова в чтобы получать текущий номер ревизии в ваших файлах после каждого коммита. Существует свойство $Revision$ для подстановки ревизии и $HeadURL$ для подстановки URL-адреса репозитория. Вам просто нужно вставить в файл следующую строку и поместить этот файл в систему управления версиями:

$Revision$ $HeadURL$

Если вы создаете манифест на лету с помощью maven, я бы рекомендовал поместить следующий контент в version.properties файл:

revision=$Revision$
repourl=$HeadURL$

Затем включите в pom.xml с помощью оператора (в maven должен быть включен плагин свойств):

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-1</version>
    <executions>
      <execution>
        <phase>initialize</phase>
        <goals>
          <goal>read-project-properties</goal>
        </goals>
        <configuration>
          <files>
            <file>version.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>

And then you will be able to put revision number and repo url to the manifest:

<manifest>
  <attribute name="Revision" value="${revision}" />
  <attribute name="Repository URL" value="${repourl}" />
</manifest>

Также обратите внимание, что вам нужно будет явно включить svn:keywords, используя свойства Subversion, чтобы $Revision$ и $HeadURL$ подставляли в вашем файле фактические значения. Если вы решите использовать version.properties, вам нужно будет выполнить следующую команду:

svn propset svn:keywords Revision version.properties
svn propset svn:keywords HeadURL version.properties
person altern    schedule 19.01.2012
comment
спасибо, одно исправление заключается в том, что в наборе свойств должен быть Revision \ HeadURL вместо Id. Однако эта $ Revision включает только версию version.properties (см .: svnbook.red-bean.com/en/1.7/, где globalrev) Однако $ HeadURL $ меняется нечасто (если вы svn не переключаете подкаталог). Поэтому мне следует подумать об использовании HeadURL, а не полностью игнорировать ключевые слова. Спасибо. - person Steven R. Loomis; 19.01.2012