#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…