概要
Scala + Play でアプリを作ってみようとしたら、
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: FAILED DOWNLOADS ::
[warn] :: ^ see resolution messages for details ^ ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: com.typesafe.sbt#sbt-web;1.4.3!sbt-web.jar(doc)
[warn] :: com.typesafe.sbt#sbt-web;1.4.3!sbt-web.jar(src)
[warn] :: com.typesafe.sbt#sbt-native-packager;1.3.2!sbt-native-packager.jar(src)
[warn] :: com.typesafe.sbt#sbt-native-packager;1.3.2!sbt-native-packager.jar(doc)
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[error] sbt.librarymanagement.ResolveException: download failed: com.typesafe.sbt#sbt-web;1.4.3!sbt-web.jar(doc)
[error] download failed: com.typesafe.sbt#sbt-web;1.4.3!sbt-web.jar(src)
[error] download failed: com.typesafe.sbt#sbt-native-packager;1.3.2!sbt-native-packager.jar(src)
[error] download failed: com.typesafe.sbt#sbt-native-packager;1.3.2!sbt-native-packager.jar(doc)
↑みたいなエラーが出て、最初の依存関係解決に失敗し、2日ほどハマった。
以下、今回のケースでの解決手順。
環境およびバージョン情報
- OS: OS X Yosemite
- sbt: 1.1.2
- scala: 2.12.4
- play: 2.6.12
- IntelliJ: IntelliJ Community 2017.3.5
環境構築でやったこと
各種ツールのインストール手順は省略。
- sbtインストール
- IntelliJインストール
-
sbt new playframework/play-scala-seed.g8
1で、playアプリの雛形を作成 - IntelliJで、作成した雛形をプロジェクトとしてインポート
- 概要のエラーが発生し、プロジェクトのインポート失敗
解決方法
download failed: com.typesafe.sbt
というエラーメッセージを見る限り、依存関係の衝突とかややこしい問題ではなく、単純にダウンロード失敗しているっぽい。
ネットワークの問題ではなさそうだった(ブラウザとかcurlとかは使えた)ので、何かしらツールの問題を疑った。
上記エラーメッセージでググってみたところ、まさに同じエラー内容でIssueが上がっていた。
https://github.com/sbt/sbt-native-packager/issues/1063
内容をおっかけたところ、どうやらsbt側にバグがあって、それを解消するためのワークアラウンドが必要っぽい。
sbt-native-packagerのIssueでは「resolvers += Resolver.sbtPluginRepo("releases")
を入れればおk」的なことが書かれているが、「どこに書けば良いのか」が明記されていない。
→どうやら、build.sbtに入れれば良さげ。
lazy val root = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.12.4"
resolvers += Resolver.sbtPluginRepo("releases") // ←追加部分
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test
自分の場合は、scalaVersion
の直後に入れたら、IntelliJでのインポートが成功した。
この場所じゃないとダメなのか、どこでも良いのかまでは確認していない。
-
activatorはEOLを迎えたらしいので、sbt + giter8テンプレートで生成している。 ↩