我尝试使用Git引用自定义ScalaCheck,我的build.sbt
文件如下
lazy val root = (project in file("."))
.settings(
name := "myproject",
version := "1.0",
scalaVersion := "2.11.8",
libraryDependencies ++= Seq(/*other dependencies*/)
)
.dependsOn(sc)
lazy val sc = RootProject(uri("https://github.com/<user>/scalacheck.git"))
version in sc := "1.14.0-SNAPSHOT"
问题在于我无法导入库。我只收到scalacheck不属于org
的错误。这是我的代码
import org.scalacheck._
object Main extends App {
println("Hello world")
}
此外,我只能使用Scala版本2.12,但我需要使用2.11,因为其他一些依赖项只支持它。使用2.11它根本无法解决依赖性。
我在SBT版本0.13.13。
这是我的sbt输出,
[info] Loading project definition from C:\Users\user\myproject\project
[info] Loading project definition from C:\Users\user\.sbt\0.13\staging\ec35d052aa233b07b77a\scalacheck\project
[info] Set current project to myproject (in build file:/C:/Users/user/myproject/)
> [info] Defining root/*:shellPrompt
[info] The new value will be used by no settings or tasks.
[info] Reapplying settings...
[info] Set current project to myproject (in build file:/C:/Users/user/myproject/)
[info] Defining */*:sbtStructureOutputFile
[info] The new value will be used by no settings or tasks.
[info] Reapplying settings...
[info] Set current project to myproject (in build file:/C:/Users/user/myproject/)
[info] Defining */*:sbtStructureOptions
[info] The new value will be used by no settings or tasks.
[info] Reapplying settings...
[info] Set current project to myproject (in build file:/C:/Users/user/myproject/)
[info] Applying State transformations org.jetbrains.sbt.CreateTasks from C:/Users/user/.IntelliJIdea2016.3/config/plugins/Scala/launcher/sbt-structure-0.13.jar
[info] Reapplying settings...
[info] Set current project to myproject (in build file:/C:/Users/user/myproject/)
[info] Updating {file:/C:/Users/user/myproject/}root...
[info] Resolving org.scala-lang#scala-library;2.11.8 ...
[info] Resolving default#scalacheck_2.11;1.14.0-SNAPSHOT ...
[info] Resolving default#scalacheck_2.11;1.14.0-SNAPSHOT ...
[warn] module not found: default#scalacheck_2.11;1.14.0-SNAPSHOT
[warn] ==== local: tried
[warn] C:\Users\user\.ivy2\local\default\scalacheck_2.11\1.14.0-SNAPSHOT\ivys\ivy.xml
[warn] ==== public: tried
[warn] https://repo1.maven.org/maven2/default/scalacheck_2.11/1.14.0-SNAPSHOT/scalacheck_2.11-1.14.0-SNAPSHOT.pom
[info] Resolving org.scalaj#scalaj-http_2.11;2.3.0 ...
[info] Resolving com.fasterxml.jackson.module#jackson-module-scala_2.11;2.7.2 ...
[info] Resolving org.scala-lang#scala-reflect;2.11.8 ...
[info] Resolving com.fasterxml.jackson.core#jackson-core;2.7.2 ...
[info] Resolving com.fasterxml.jackson.core#jackson-annotations;2.7.2 ...
[info] Resolving com.fasterxml.jackson.core#jackson-databind;2.7.2 ...
[info] Resolving com.fasterxml.jackson.module#jackson-module-paranamer;2.7.2 ...
[info] Resolving com.thoughtworks.paranamer#paranamer;2.8 ...
[info] Resolving ch.qos.logback#logback-classic;1.1.7 ...
[info] Resolving ch.qos.logback#logback-core;1.1.7 ...
[info] Resolving org.slf4j#slf4j-api;1.7.20 ...
[info] Resolving com.typesafe.scala-logging#scala-logging_2.11;3.5.0 ...
[info] Resolving org.slf4j#slf4j-api;1.7.21 ...
[info] Resolving com.softwaremill.quicklens#quicklens_2.11;1.4.8 ...
[info] Resolving org.scalacheck#scalacheck_2.11;1.13.4 ...
[info] Resolving org.scala-sbt#test-interface;1.0 ...
[info] Resolving org.scala-lang#scala-compiler;2.11.8 ...
[info] Resolving org.scala-lang.modules#scala-xml_2.11;1.0.4 ...
[info] Resolving org.scala-lang.modules#scala-parser-combinators_2.11;1.0.4 ...
[info] Resolving jline#jline;2.12.1 ...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: default#scalacheck_2.11;1.14.0-SNAPSHOT: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] Note: Unresolved dependencies path:
[warn] default:scalacheck_2.11:1.14.0-SNAPSHOT
[warn] +- myproject:myproject_2.11:1.0
[trace] Stack trace suppressed: run 'last root/*:update' for the full output.
[trace] Stack trace suppressed: run 'last root/*:ssExtractDependencies' for the full output.
[error] (root/*:update) sbt.ResolveException: unresolved dependency: default#scalacheck_2.11;1.14.0-SNAPSHOT: not found
[error] (root/*:ssExtractDependencies) sbt.ResolveException: unresolved dependency: default#scalacheck_2.11;1.14.0-SNAPSHOT: not found
[error] Total time: 3 s, completed 2017-feb-10 09:14:53
.sbt/0.13/staging/ec35d052aa233b07b77a/scalacheck
包含完整的repo以及我认为目标目录中的构建,但大多数是指Scala版本2.12的构建。
后续编辑:我认为SBT的这个错误报告涉及https://github.com/sbt/sbt/issues/2901
答案 0 :(得分:1)
假设您的<user>/scalacheck.git
是原始rickynils/scalacheck.git
的分叉,问题是scalacheck的当前主分支
是targetted to scala 2.12.0
由于您的scalaVersion
是2.11.8,因此不支持当前版本的scalacheck。
因此,将build.sbt
scalaVersion
更改为2.12.0可以解决问题。
此外,您可以使用sbt projects
检查scalacheck中是否包含三个项目:
$ sbt projects
js
jvm
* scalacheck
js
适用于scalajs
,因此您需要的是jvm
因此,您必须使用ProjectRef
代替RootProject
来指定项目。
lazy val root = (project in file("."))
.settings(
name := "myproject",
version := "1.0",
scalaVersion := "2.12.0",
libraryDependencies ++= Seq(/*other dependencies*/)
)
.dependsOn(sc)
lazy val sc = ProjectRef(uri("https://github.com/<user>/scalacheck.git"),"jvm")
version in sc := "1.14.0-SNAPSHOT"
同时将scalaVersion
中的build.sbt
更改为2.11.8
中的https://github.com/<user>/scalacheck.git
可能有效,但如果它使用{{1}的新功能则无法编译}。
如果您想使用scala 2.11.8,可以使用2.12.0
语法指定旧版本。
#GIT_TAG