首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IntelliJ在构建时没有引用正确的Scala版本

IntelliJ在构建时没有引用正确的Scala版本
EN

Stack Overflow用户
提问于 2018-01-15 22:41:57
回答 1查看 2K关注 0票数 1

我使用的是IntelliJ IDEA v2017.3.2社区版,它似乎一直在为Scala插件提取错误的回购版本。

我曾尝试在scalaVersion和idea.sbt中设置:= "2.11.8“,但它一直试图从2.12插件repos中提取。

我的build.sbt如下:

代码语言:javascript
复制
import sbt.Keys._
import sbt._
import sbtrelease.{Version => SbtVersion}

name := "lambda-geotrellis-tile-server"

resolvers += Resolver.sonatypeRepo("public")
scalaVersion := "2.11.8"
releaseNextVersion := { ver => SbtVersion(ver).map(_.bumpMinor.string).getOrElse("Error") }

lazy val commonSettings = Seq(
  organization := "com.jisantuc",
  version := "0.0.1",
  cancelable in Global := true,
  scalaVersion := Version.scala,
  scalacOptions := Seq(
    "-deprecation",
    "-unchecked",
    "-feature",
    "-language:implicitConversions",
    "-language:reflectiveCalls",
    "-language:higherKinds",
    "-language:postfixOps",
    "-language:existentials",
    "-language:experimental.macros",
    "-feature"
  ),
  shellPrompt := { s => Project.extract(s).currentProject.id + " > " },
  addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
)


libraryDependencies ++= Seq(
  Dependencies.awsJavaCore,
  Dependencies.awsJavaEvents,
  Dependencies.awsJavaLog4j,
  Dependencies.commonsIo,
  Dependencies.geotrellisS3,
  Dependencies.geotrellisRaster,
  Dependencies.geotrellisSpark,
  Dependencies.circeCore,
  Dependencies.circeGeneric,
  Dependencies.circeParser
)

lazy val root = Project("root", file("."))
  .settings(resolvers += "LocationTech GeoTrellis Releases" at "https://repo.locationtech.org/content/repositories/geotrellis-releases")
  .settings(commonSettings:_*)

assemblyMergeStrategy in assembly := {
  case "reference.conf" => MergeStrategy.concat
  case "application.conf" => MergeStrategy.concat
  case n if n.endsWith(".SF") || n.endsWith(".RSA") || n.endsWith(".DSA") => MergeStrategy.discard
  case "META-INF/MANIFEST.MF" => MergeStrategy.discard
  case _ => MergeStrategy.first
}
assemblyJarName in assembly := s"lambda-geotrellis-tile-server.jar"

import S3._
s3Settings
mappings in upload := Seq((file(s"target/scala-2.11/${name.value}.jar"), s"${name.value}.jar"))
host in upload := "lambda-geotrellis-tile-server-jar.s3.amazonaws.com"
progress in upload := true
upload <<= upload dependsOn assembly

initialCommands in console := """
  |import io.circe.parser._
  |import io.circe.syntax._
  |import geotrellis.spark.io._
  |import geotrellis.spark.io.s3._
""".trim.stripMargin

当构建via ./sbt程序集时,它工作得很好,但是当我尝试在IntelliJ中构建它时,就会发生这样的情况:

代码语言:javascript
复制
[warn]   file:////home/ken/.sbt/preloaded/com/github/gseitz/sbt-release_2.12_1.0/1.0.0/sbt-release-1.0.0.pom
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.github.gseitz/sbt-release/scala_2.12/sbt_1.0/1.0.0/ivys/ivy.xml
[warn]  module not found: com.eed3si9n#sbt-assembly;0.14.3
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/com.eed3si9n/sbt-assembly/scala_2.12/sbt_1.0/0.14.3/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.eed3si9n/sbt-assembly/scala_2.12/sbt_1.0/0.14.3/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /home/ken/.ivy2/local/com.eed3si9n/sbt-assembly/scala_2.12/sbt_1.0/0.14.3/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/com/eed3si9n/sbt-assembly_2.12_1.0/0.14.3/sbt-assembly-0.14.3.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /home/ken/.sbt/preloaded/com.eed3si9n/sbt-assembly/0.14.3/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////home/ken/.sbt/preloaded/com/eed3si9n/sbt-assembly_2.12_1.0/0.14.3/sbt-assembly-0.14.3.pom
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.eed3si9n/sbt-assembly/scala_2.12/sbt_1.0/0.14.3/ivys/ivy.xml
[warn]  module not found: com.typesafe.sbt#sbt-s3;0.9
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbt/sbt-s3/scala_2.12/sbt_1.0/0.9/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-s3/scala_2.12/sbt_1.0/0.9/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /home/ken/.ivy2/local/com.typesafe.sbt/sbt-s3/scala_2.12/sbt_1.0/0.9/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/com/typesafe/sbt/sbt-s3_2.12_1.0/0.9/sbt-s3-0.9.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /home/ken/.sbt/preloaded/com.typesafe.sbt/sbt-s3/0.9/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////home/ken/.sbt/preloaded/com/typesafe/sbt/sbt-s3_2.12_1.0/0.9/sbt-s3-0.9.pom
[warn] ==== sbt-plugin-releases: tried
[warn]   https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-s3/scala_2.12/sbt_1.0/0.9/ivys/ivy.xml
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.github.gseitz#sbt-release;1.0.0: not found
[warn]  :: com.eed3si9n#sbt-assembly;0.14.3: not found
[warn]  :: com.typesafe.sbt#sbt-s3;0.9: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

即使试图再次使用./sbt程序集进行构建,..and也会成为永久的。我试图找出2.12的来源,但没有看到任何配置文件指定它。

此外,在scalaVersion中更改idea.sbt会导致此错误:

代码语言:javascript
复制
[error] Modules were resolved with conflicting cross-version suffixes in {file:/home/ken/.sbt/1.0/plugins/}global-plugins:
[error]    org.scala-lang.modules:scala-xml _2.11, _2.12
[error]    org.scala-lang.modules:scala-parser-combinators _2.11, _2.12
[error] java.lang.RuntimeException: Conflicting cross-version suffixes in: org.scala-lang.modules:scala-xml, org.scala-lang.modules:scala-parser-combinators

我猜这两个模块是由IntelliJ IDEA使用的吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 23:42:49

SBT和您的应用程序可以(而且很可能会)使用两个不同的Scala版本( SBT使用的一个版本不是由构建定义文件控制,而是由SBT本身使用的Scala版本控制)。SBT0.13.x是用Scala2.10.x编写的(这也迫使插件使用该版本),而SBT1.0.x现在在Scala2.12中。

我相信,您可以通过降级到支持所需插件的SBT版本,或者升级到支持Scala 2.12/SBT 1.0.x的插件版本(例如,sbt-程序集0.14.30.14.6可以)来解决问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48271705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档