Пишу сервлет на винде, собираю проект через Gradle. Запускать надо будет на Debian. В проекте используется путь до определённого файла в ОС (драйвер Chrome для Selenium). На винде и Debian он разный. Как я могу настроить варианты сборки для разных ОС так, чтобы в них была в Java коде доступна константа, заданная в скрипте сборки и имеющая разные значения для вариантов сборки?
В андроид это сделать легко, а вот тут сходу не сообразить. Рассмотрю вариант однозначного программного определения ОС, на коей идёт исполнение и подставление пути до файла в рантайме.
Ответ
Рассмотрю вариант однозначного программного определения ОС, на коей идёт исполнение и подставление пути до файла в рантайме.
Насколько я понимаю для Ваших целей достаточного грубого определения ОС: Windows и не-Windows. Тогда подойдет такой метод:
boolean isWindows() {
return System.getProperty("os.name").contains("Windows");
}
Метод можно использовать при инициализации пути, например:
//константы
private static final String WINDOWS_PATH = "C:\\driver\\chrome.exe";
private static final String UNIX_PATH = "/usr/bin/chromedriver";
...
//использование
pathToExecutable = isWindows() ? WINDOWS_PATH : UNIX_PATH;
С помощью Gradle можно записывать путь, например, в файл properties, после чего код будет считывать его в рантайме.
Комментариев нет:
Отправить комментарий