Номер версії додатку скомпільованого в Netbeans

Давно шукав метод генерування порядкового номеру побудови jar-файлу скомпільованому в Netbeans.

Наведений фрагмент коду з build.xml, показує можливий шлях налаштування проекту в Netbeans. Код генерує наступний номер версії для jar-файлу. Поточна версія проекту зберігається у файлі version.properties. Крім порядкового номеру побудови jar-файлу "Application.buildnumber", сценарій додає у файлі version.properties інформацію про час компілювання "Application.builddate" та логін розробника "Application.builder". Крім того можна додати інформацію про версію додатку "Application.cvsversion", але метод її формування специфічний для кожної CVS.

У файл build.xml проекту створеному в Netbeans після рядка:

    <import file="nbproject/build-impl.xml"/>

Необхідно додати наступний код:

    <tstamp>
      <!-- ініціалізую змінну "builddate" -->
      <format property="builddate" pattern="dd.MM.yyyy HH:mm:ss" timezone="EET"/>
    </tstamp>
    <!-- ініціалізую змінну "whoami" -->
    <exec executable="whoami" outputproperty="whoami"/>
    <!-- exec executable="cvsversion-sh" outputproperty="cvsversion"/ -->
    <!-- target name="-post-jar" description="Sets the buildversion for the current build" -->
    <target name="-pre-compile" description="Sets the buildversion for the current build">
      <propertyfile file="${src.dir}/resources/version.properties">
        <!-- заповнюю значення номеру та дати компілювання додатку -->
        <entry key="Application.builddate" value="${builddate}" type="string"/>
        <entry key="Application.builder" value="${whoami}" type="string"/>
        <!-- entry key="Application.cvsversion" value="1.0.0.82" type="string"/ -->
        <entry key="Application.buildnumber" value="1" type="int" operation="+"/>
      </propertyfile>
    </target>

Інформація із файлу version.properties може бути використана в діалозі "Про додаток".

public class AboutBox extends javax.swing.JDialog {
...
      ClassLoader loader = ClassLoader.getSystemClassLoader();
      InputStream in = loader.getResourceAsStream("resources/version.properties");
      Properties v = new Properties();
      try {
        v.load(in);
      } catch (IOException ex) {
        Logger.getLogger(AboutBox.class.getName()).log(Level.SEVERE, null, ex);
      }
      String buildnumber = v.getProperty("Application.buildnumber");
      String builddate = v.getProperty("Application.builddate");
      StringBuilder sb = new StringBuilder();
      sb.append("<html><center>");
      sb.append("Версія: ");
      sb.append(version);
      sb.append("(");
      sb.append(buildnumber);
      sb.append(")<br>Cкомпільовано: ");
      sb.append(builddate);
      sb.append("</html>");
      jLabel1.setText(sb.toString());
...
}
Advertisements

Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: