在SBT中,如何从Git中添加“addCompilerPlugin”?

时间:2014-01-14 14:43:40

标签: sbt

通常,不使用Git时,您只需写:

addCompilerPlugin("something" % "blah" ...)

scalacOptions += "-P:blah:..."

addCompilerPlugin需要ModuleID。但在这里......我尝试添加:

lazy val root = project in file(".") dependsOn
  uri("git://github.com/puffnfresh/wartremover.git#master")

project/plugins.sbt以及:

lazy val wartRemover = RootProject(
  uri("git://github.com/puffnfresh/wartremover.git#master"))

lazy val root = Project(...).settings(
  ...
  scalacOptions += "-P:wartremover:...",
  ...
  ) depends on wartRemover

两者都导致:

[error] (root/*:update) sbt.ResolveException: unresolved dependency:
  org.brianmckenna#wartremover_2.10.3;0.5-SNAPSHOT: not found

1 个答案:

答案 0 :(得分:2)

tl; dr 尚未针对Scala版本wartremover发布项目2.10.3。在其他必要设置build.sbt中使用以下内容降级您的内容:

scalaVersion := "2.10.2"

关注Scala 2.10.3的详细程序

build.sbt

中的以下内容
addCompilerPlugin("org.brianmckenna" % "wartremover" % "0.5" cross CrossVersion.full)

org.brianmckenna:wartremover:0.5:plugin->default(compile)添加到libraryDependencies

[sbt-0-13-2]> show libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.3, org.brianmckenna:wartremover:0.5:plugin->default(compile))

所以要使用指向GitHub项目RootProject的{​​{1}},我必须在wartremover中使用以下内容(这是完整的文件):

build.sbt

由于项目scalacOptions in root += "-P:wartremover:traverser:org.brianmckenna.wartremover.warts.Unsafe" lazy val root = project in file(".") dependsOn wartRemover % "plugin->default(compile)" lazy val wartRemover = RootProject( uri("git://github.com/puffnfresh/wartremover.git#master")) 未针对wartremover发布,因此我按照以下步骤操作:

  1. 显示可用的2.10.3

    projects
  2. 切换到[root]> projects [info] In file:/Users/jacek/sandbox/so/sbt-0.13.2/ [info] * root [info] In git://github.com/puffnfresh/wartremover.git#master [info] wartremover wartremoverpublishLocal设置为scalaVersion

    2.10.3
  3. 切换到项目[wartremover]> set scalaVersion := "2.10.3" [info] Defining wartremover/*:scalaVersion [info] The new value will be used by wartremover/*:allDependencies, wartremover/*:assemblyPackageScala::assemblyDefaultJarName and 12 others. [info] Run `last` for details. [info] Reapplying settings... [info] Set current project to wartremover (in build git://github.com/puffnfresh/wartremover.git#master) [wartremover]> publishLocal [info] Packaging /Users/jacek/.sbt/0.13/staging/d6dd3d2e3d818e69943a/wartremover/target/scala-2.10/wartremover_2.10.3-0.6-SNAPSHOT-sources.jar ... [info] Updating {git://github.com/puffnfresh/wartremover.git#master}wartremover... ... [info] published ivy to /Users/jacek/.ivy2/local/org.brianmckenna/wartremover_2.10.3/0.6-SNAPSHOT/ivys/ivy.xml [success] Total time: 7 s, completed Jan 18, 2014 11:34:07 PM 并执行root。它现在应该可以正常工作。

    update
  4. [wartremover]> project {file:/Users/jacek/sandbox/so/sbt-0.13.2/} [info] Set current project to root (in build file:/Users/jacek/sandbox/so/sbt-0.13.2/) [root]> update [info] Updating {file:/Users/jacek/sandbox/so/sbt-0.13.2/}root... [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [success] Total time: 0 s, completed Jan 18, 2014 11:36:24 PM 现在也可以正常工作。

    console

    但错误信息让我很担心。我不知道这个插件,也不知道怎么摆脱它。当我在[root]> console [info] Starting scala interpreter... [info] <console>:5: error: var is disabled var value: scala.tools.nsc.interpreter.IMain = _ ^ Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45). Type in expressions to have them evaluated. Type :help for more information. scala> 中设置scalaVersion := "2.10.2"build.sbt中设置{{1}}时所遵循的步骤(因此编译器插件在回购中可用)时,也会发生这种情况。