首页 > 解决方案 > 在构建中导入 sbt 和类型安全 (IntelliJ)

问题描述

我无法将 sbt 和类型安全库导入 IntelliJ 中的 build.sbt。

sbt 和 typesafe 的依赖在 plugin.sbt 文件中。在文件 plugin.sbt 中,我也有红色的 addSbtPlugin 方法:

插件.sbt

而库的导入在 build.sbt 文件中。

构建.sbt

我的

我能怎么做?

更新

build.sbt文件是这样的:

import com.typesafe.sbt.license.{DepModuleInfo, LicenseCategory, LicenseInfo}
import sbt._
import scala.io.Source

// Core library versions (the ones that are used multiple times)
val sparkVersion: String = "2.3.1"
val slf4jVersion: String = "1.7.25"
val logbackVersion: String = "1.2.3"

// Artifactory settings
val artifactoryRealm: String = "artifactory-espoo1.int.net.nokia.com"
val artifactoryUrl: String = s"https://$artifactoryRealm/artifactory/"
val artifactoryUser: Option[String] = sys.env.get("ARTIFACTORY_USER")
val artifactoryPassword: Option[String] = sys.env.get("ARTIFACTORY_PASSWORD")

// Project variables
val organizationId: String = "com.nokia.gs.npo.ae"
val rootPackage: String = organizationId + ".rfco"

// Base settings shared across modules
val baseSettings: Seq[SettingsDefinition] = Seq(
  organization := organizationId,
  version := Source.fromFile(file("VERSION")).mkString.trim + sys.env.getOrElse("VERSION_TAG", ""),
  scalaVersion := "2.11.12",
  buildInfoUsePackageAsPath := true,
  scalafmtOnCompile in ThisBuild := false, // just invoke `sbt scalafmt` before commits!
  parallelExecution in ThisBuild := false,
  fork in Test := true,
  testForkedParallel in Test := true,
  logLevel in test := util.Level.Info,
  coverageMinimum := sys.env.getOrElse("COVERAGE_MINIMUM", "80.0").toDouble,
  coverageFailOnMinimum := true,
  libraryDependencies ++= Seq(
    "org.apache.spark"              %% "spark-sql"               % sparkVersion   % Provided,
    "org.apache.spark"              %% "spark-hive"              % sparkVersion   % Provided,
    "org.slf4j"                     % "slf4j-api"                % slf4jVersion   % Compile,
    "com.nokia.gs.ncs.chubs.common" %% "spark-commons"           % "0.5.10"       % Compile,
    "com.nokia.gs.ncs.chubs.common" %% "lang"                    % "0.2.0"        % Compile,
    "com.fasterxml.jackson.module"  %% "jackson-module-scala"    % "2.9.8"        % Compile,
    "com.typesafe.play"             %% "play-json"               % "2.7.1"        % Compile,
    "org.apache.commons"            % "commons-csv"              % "1.7"          % Compile,
    "org.scalatest"                 %% "scalatest"               % "3.0.5"        % Test,
    "ch.qos.logback"                % "logback-classic"          % logbackVersion % Test,
    "ch.qos.logback"                % "logback-core"             % logbackVersion % Test,
    "org.apache.spark"              %% "spark-hive-thriftserver" % sparkVersion   % Test,
    "com.github.tomakehurst"        % "wiremock-standalone"      % "2.22.0"       % Test
  ),
  excludeDependencies ++= Seq(
    "com.fasterxml.jackson.module" % "jackson-module-scala",
    "org.slf4j"                    % "slf4j-log4j12",
    "org.hamcrest"                 % "hamcrest-core",
    "javax.servlet"                % "servlet-api"
  ),
  publishTo := {
    Some("Artifactory Realm" at artifactoryUrl + sys.env.getOrElse("ARTIFACTORY_LOCATION", "ava-maven-snapshots-local"))
  },
  packagedArtifacts in publish ~= { m =>
    val classifiersToExclude = Set(Artifact.SourceClassifier)
    m.filter({ case (art, _) => art.classifier.forall(c => !classifiersToExclude.contains(c)) })
  },
  (artifactoryUser, artifactoryPassword) match {
    case (Some(user), Some(password)) =>
      credentials += Credentials("Artifactory Realm", artifactoryRealm, user, password)
    case _ =>
      println("[info] USERNAME and/or PASSWORD is missing for publishing to Artifactory")
      credentials := Seq()
  }
)

标签: scalaintellij-ideasbt

解决方案


通过查看build.sbtplugins.sbt应该至少包含以下几行:

addSbtPlugin("com.typesafe.sbt" % "sbt-license-report" % "1.2.0")
addSbtPlugin("com.eed3si9n"     % "sbt-buildinfo"      % "0.9.0")
addSbtPlugin("org.scalameta"    % "sbt-scalafmt"       % "2.2.1")
addSbtPlugin("org.scoverage"    % "sbt-scoverage"      % "1.6.1")

推荐阅读