система управления версиями Java с ant

#java #ant #version

#java #ant #версия

Вопрос:

У меня есть ANT-Skript, который создает мой релиз. Он должен использовать номер версии, поэтому он вводится в ANT-Скрипте.

В то же время существует файл Java с таким же номером версии, этот номер необходим программному обеспечению внутренне.

Есть ли какой-нибудь способ иметь только одно место для хранения номера версии?

Ответ №1:

Вы могли бы использовать задачу filter или replace, чтобы записать ее в файл ресурсов (например, выделенный файл свойств), который был бы доступен по пути к классам вашего приложения.

Комментарии:

1. Будучи инженером по сборке, я предпочитаю, чтобы система сборки определяла версию и номер сборки.

Ответ №2:

Макдауэлл дал «стандартный» ответ об использовании Ant для вставки номера версии в файл Java и / или ресурс classpath. Однако мне никогда не нравился такой подход.

Альтернативой, которая использует поведение Java «он готов к запуску, как только он скомпилирован», является присвоение вашему Version классу a main() :

 public class Version
{
   public final static int MAJOR    = 1;
   public final static int MINOR    = 0;
   public final static int PATCH    = 0;

   public final static String VERSION_STRING = MAJOR   "."   MINOR   "."   PATCH;

   public static void main(String[] argv)
   throws Exception
   {
      System.out.println(VERSION_STRING);
   }
}
  

Затем вы бы вызвали это с помощью <java> задачи Ant, сохранив выходные данные в свойстве.

Комментарии:

1. Она работает 🙂 свойство outputproperty задачи java делает свое дело

Ответ №3:

Простое решение: напишите небольшую ant-задачу, которая считывает номер версии из класса version (я предполагаю, что у нее есть статический метод получения) и сохраняет номер версии в свойстве ant. Вам нужно только убедиться, что файл версии находится в пути к классу ant, чтобы задача могла получить к нему доступ:

 public GetVersion extends Task {
  public void execute() {
    getProject().setProperty("VERSIONNUMBER", Version.getNumber());
  }
}
  

В скрипте ant определите задачу ( <taskdef> ), выполните ее и найдите номер версии в свойстве ${VERSIONNUMBER}

Ответ №4:

Может быть, задача ANT BuildNumber — это то, что вы ищете? Она поддерживает один файл с номером версии. Нет проблем прочитать это из java…