Как настроить sbt в Windows для выбора конкретного JDK (среди доступных JDK)? - PullRequest
4 голосов
/ 02 июня 2019

Есть ли способ сообщить SBT, какой (локально) установленный JDK использовать?

Я вполне уверен, что смогу изменить PATH и JAVA_HOME, но я бы не хотел менять эти настройки, поскольку они применяются ко всей системе (в данном случае Windows).

Я больше ищу какой-нибудь параметр командной строки.

1 Ответ

4 голосов
/ 03 июня 2019

Если вы хотите указать JDK для запуска SBT (вместо JDK для использования для запуска кода и / или тестов изнутри SBT ), вы можете использовать переменную окружения JAVA_HOMES и файл .java-version в вашем проекте.

Это описано в SBT .Файл sbt.bat (обычно устанавливается в C:\Program Files (x86)\sbt\bin) как "1017 * для бедняков", который в настоящее время недоступен в Windows .

(Если вы ищетеаналогичное решение для Linux или MacOS , вы можете использовать jEnv или указать домашний каталог Java через -java-home SBT опция командной строки, которая, к сожалению, в настоящее время также не реализована в Windows .)

Переменная среды JAVA_HOMES (не путать сJAVA_HOME) используется SBT для идентификации каталога, который содержит одну или несколько JDK установок.Например, если вы используете AdoptOpenJDK JDK (рекомендуется для Windows , если Oracle Новые лицензионные ограничения представляют для вас проблему), тогда это обычно определяется как C:\Program Files\AdoptOpenJDK.

Допустим, у вас есть две такие установки JDK в каталоге JAVA_HOMES: один в подкаталоге с именем jdk-8.0.212.03-hotspot;другой в подкаталоге jdk-11.0.3.7-hotspot.Вы можете выбрать, какой JDK вы хотите использовать, для каждого отдельного проекта, создав файл с именем .java-version в корневом каталоге каждого проекта SBT .Чтобы использовать JDK в подкаталоге jdk-8.0.212.03-hotspot, этот файл должен содержать:

jdk-8.0.212.03-hotspot

Когда вы запускаете команду sbt, если определено JAVA_HOMES, SBT будет искать файл .java-version в корневом каталоге проекта.Если он находит его, он создает локальную версию JAVA_HOME, которая определяется как JAVA_HOMES плюс последняя строка .java-version.Он также добавляет этот каталог JAVA_HOME bin в путь.(Он также создает переменную среды JDK_HOME local с тем же значением.)

Это должно делать то, что вы хотите.Хотя это решение не основано на командной строке, оно не оказывает негативного влияния на других пользователей и позволяет настраивать каждый проект SBT индивидуально.Если у вас нет разрешения на создание общесистемной переменной среды, вы все равно сможете создать пользовательскую переменную среды JAVA_HOMES.Обратите внимание, что при использовании этого решения JDK , который используется SBT , не обязательно будет идентифицироваться вашей общесистемной (или пользовательской) переменной среды JAVA_HOME.(Если вы не определили JAVA_HOMES, то SBT будет ожидать, что вы определили действительную переменную JAVA_HOME.)

Одно слово предостережения: если вы передадите .java-version вПри управлении исходным кодом вы должны убедиться, что каждый определяет допустимую переменную среды JAVA_HOMES и имеет JDK с точно таким же именем, установленным в этом каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...