#java #linux #debian #servlet #gradle
Пишу сервлет на винде, собираю проект через Gradle. Запускать надо будет на Debian. В проекте используется путь до определённого файла в ОС (драйвер Chrome для Selenium). На винде и Debian он разный. Как я могу настроить варианты сборки для разных ОС так, чтобы в них была в Java коде доступна константа, заданная в скрипте сборки и имеющая разные значения для вариантов сборки? В андроид это сделать легко, а вот тут сходу не сообразить. Рассмотрю вариант однозначного программного определения ОС, на коей идёт исполнение и подставление пути до файла в рантайме.
Ответы
Ответ 1
Рассмотрю вариант однозначного программного определения ОС, на коей идёт исполнение и подставление пути до файла в рантайме. Насколько я понимаю для Ваших целей достаточного грубого определения ОС: 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, после чего код будет считывать его в рантайме.Ответ 2
Если в самом скрипте Gradle то можно воспользоваться следующей конструкцией: import org.apache.tools.ant.taskdefs.condition.Os if (Os.isFamily(Os.FAMILY_WINDOWS) { Тут код } if (Os.isFamily(Os.FAMILY_UNIX) { И тут код }
Комментариев нет:
Отправить комментарий