Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Как в gradle скрипте Java проекта настроить создание константы, имеющей разные значения для разных ОС

#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) { И тут код }

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

Отправить комментарий