система контроля версий Java с муравьем - PullRequest
1 голос
/ 06 апреля 2011

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

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

Есть ли способ, чтобы просто хранить одно место для хранения номера версии?

Ответы [ 4 ]

2 голосов
/ 06 апреля 2011

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

1 голос
/ 06 апреля 2011

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

Альтернатива, которая использует поведение Java "она готова к запуску, как только скомпилируется", заключается в предоставлении вашему Version классу 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);
   }
}

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

1 голос
/ 06 апреля 2011

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

1 голос
/ 06 апреля 2011

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

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

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

...