Добавление версии программного обеспечения к имени файла JAR - PullRequest
4 голосов
/ 23 октября 2009

Я хотел бы добавить выходное имя JAR-файла проекта Netbeans с некоторым номером версии: что-то вроде 1.0, 2.0b или даже номером ревизии Subversion. Похоже, я ничего не могу найти по этому поводу. Я также не уверен, отвечает ли это за систему сборки (Ant) или IDE (Netbeans) может делегировать процесс. Есть ли централизованный, чистый способ сделать это?

Ответы [ 5 ]

6 голосов
/ 23 октября 2009

IMO, это ответственность системы сборки, а не IDE. Позвольте мне сказать это по-другому: не полагайтесь на свою IDE при создании проекта, используйте инструмент сборки. Использование IDE хорошо во время разработки, но быть зависимым от IDE для построения проекта - нехорошо (что если завтра вы измените IDE, что если вы захотите построить свой проект на другой машине / ОС без этой IDE, что если вы захотите создать свой проект на безголовой машине, что если вы захотите автоматизировать сборку, что если кто-то захочет построить этот проект и у него нет этой IDE и т. д., и т. д.). Действительно, это то, для чего нужны системы сборки.

Теперь, что касается вашего первоначального запроса, есть множество способов добавить номер версии . Одним из них является использование Ant BuildNumber задача:

Это базовое задание, которое можно использовать для отслеживания номеров сборок.

Сначала он попытается прочитать номер сборки из файла (по умолчанию build.number в текущем каталоге), а затем присвоить свойству build.number значение, которое было прочитано (или 0, если таких нет). значение). Затем он будет увеличивать число на единицу и записывать его обратно в файл. (См. Задачу PropertyFile, если вам нужен более точный контроль над такими вещами, как имя свойства или числовой формат.)

Используйте это, например, так:

  <target name="jar" depends="compile">

     <property name="version.num" value="1.00"/>
     <buildnumber file="build.num"/>

      <jar destfile="foo-${version.num}-b${build.number}.jar"
           basedir="."
           includes="**/*.class"
      />
  </target>

Или вы действительно могли бы добавить номер редакции Subversion . Простой способ сделать это, кажется, установить задачу SVNAnt и использовать задачу статуса :

  <target name="revisionnumber">

     <!-- get the svn revision number -->
     <svn>
        <status path="application.cfm" revisionProperty="svn.revision" />
     </svn>

     <echo>Sandbox Revision: ${svn.revision}</echo>

  </target>

Наконец, еще одним вариантом будет использование Maven вместо Ant, который имеет встроенную функцию управления версиями, как указано cetnar .

5 голосов
/ 23 октября 2009

Я не уверен, что это лучший способ, но мы поместили его в файл MANIFEST.MF, например:

Implementation-Version: 2.0b

Мы можем получить это значение программно следующим образом:

String version_num =  this.getClass().getPackage().getImplementationVersion();
0 голосов
/ 23 октября 2009

вы можете использовать maven для vesion и читать его из pom.

прочитайте эту статью: Встраивание номера версии maven в http://happygiraffe.net/blog/2008/10/01/embedding-the-maven-version-number/

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

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

Я использую его для автоматического увеличения номера сборки и использую его как последнюю цифру в моем номере версии для фляги, например, 1.4.168, где 168 - номер сборки. Я как раз собираюсь заставить его поместить метку в CVS непосредственно перед извлечением с номером сборки, поэтому я точно знаю, какой код находится в банке.

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

Хорошо сделано по умолчанию Maven . Даже если вы хотите назвать свой jar-файл более подробной информацией, вы можете использовать плагин с номером сборки .

EDIT
В начале я неправильно понял ваш вопрос, поэтому следующая часть относится к добавлению этой информации в jar-файлы.

Вы можете сделать это самостоятельно, создав файл манифеста . В Maven вы можете настроить процесс создания файла манифеста с помощью дополнительной конфигурации . Я предполагаю (я уверен), что в Ant должна быть похожая функциональность.

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