Были некоторые темы, связанные с тем, что репозитории Maven были изменены на TLS-протоколы, которые по умолчанию не используются JDK 1.7 (см. Https://blog.sonatype.com/enhancing-ssl-security-and-http/2 -support-for-central для получения дополнительной информации).
И теперь невозможно получить доступ к этим репозиториям, используя более старый JDK, например 1.7. По-видимому, мы можем решить это с помощью переменных среды, таких как:
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2"
Но эта переменная, похоже, игнорируется процессом установки SBT!
В Debian 8.5 я попытался установить SBT 0.13.16, используя следующие команды:
sudo echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt=0.13.16
И это не с ошибками, как:
Server access Error: Received fatal alert:
protocol_version url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.16/sbt-0.13.16.pom
Server access Error: Received fatal alert:
protocol_version url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.16/sbt-0.13.16.jar
Server access Error: Connection reset
url=https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.16/ivys/ivy.xml
Server access Error: Connection reset
url=https://repo.scala-sbt.org/scalasbt/ivy-snapshots/org.scala-sbt/sbt/0.13.16/ivys/ivy.xml
Я не могу перейти на новый SBT или JDK, потому что я работаю над старым проектом, который использует некоторые устаревшие функции.
Как правильно установить SBT и как сделать все инструменты (Maven, SBT, Java), чтобы всегда соблюдать настройку https.protocols?
Я пришел к какому-то обходному пути.
Даже если sbt
apt-get не работает, вы по-прежнему можете запустить команду sbt
после этого, и на этот раз она подберет настройку JAVA_TOOL_OPTIONS и сможет загрузить все зависимости от Maven.
Жаль, что с тех пор, как Maven TLS меняет установку Scala для систем на базе Debian, это ломается, если используется вместе со старым JDK.
-Dhttps.protocols=TLSv1.2
?