我正在尝试升级play/scala/sbt/jooq/hsqdb项目的依赖项。但是,当我试图通过jOOQ从HSQLDB表生成类时,我会得到以下错误。
build.sbt
name := "CH07"
version := "1.0"
lazy val `ch07` = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.13.4"
resolvers += "Spy Repository" at "http://files.couchbase.com/maven2"
libraryDependencies ++= Seq(
jdbc,
cache,
ws,
"com.github.mumoshu" %% "play2-memcached-play24" % "0.7.0",
"org.hsqldb" % "hsqldb" % "2.5.0",
"org.jooq" % "jooq" % "3.14.4",
"org.jooq" % "jooq-codegen-maven" % "3.14.4",
"org.jooq" % "jooq-meta" % "3.14.4",
"joda-time" % "joda-time" % "2.7",
"com.github.ironfish" %% "akka-persistence-mongo-casbah" % "0.7.6"
)
routesGenerator := InjectedRoutesGenerator
val generateJOOQ = taskKey[Seq[File]]("Generate JooQ classes")
val generateJOOQTask = (baseDirectory, dependencyClasspath in Compile, runner in Compile, streams) map { (base, cp, r, s) =>
toError(r.run(
"org.jooq.codegen.GenerationTool",
cp.files,
Array("conf/chapter7.xml"),
s.log))
((base / "app" / "generated") ** "*.scala").get
}
generateJOOQ <<= generateJOOQTask
libraryDependencies += "com.ning" % "async-http-client" % "1.9.29"project/plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.6")
//addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")
//used to work with jooq 3.7.1
//addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.3")project/build.properties
sbt.version=1.4.4--我尝试用jOOQ生成类,但是我得到了错误(但在升级依赖项之前,它通常是工作的):
带addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.6")的
$ sbt -java-home /usr/lib/jvm/jdk-11.0.1 generateJOOQ
[info] welcome to sbt 1.4.4 (Oracle Corporation Java 11.0.1)
[info] loading settings for project ch07-build from plugins.sbt ...
[info] loading project definition from /home/myname/projects/textbook/CH07/project
/home/myname/projects/textbook/CH07/build.sbt:48: error: value map is not a member of (sbt.SettingKey[java.io.File], sbt.TaskKey[sbt.Keys.Classpath], sbt.TaskKey[sbt.ScalaRun], sbt.TaskKey[sbt.Keys.TaskStreams])
val generateJOOQTask = (baseDirectory, dependencyClasspath in Compile, runner in Compile, streams) map { (base, cp, r, s) =>
^
/home/myname/projects/textbook/CH07/build.sbt:49: error: not found: value toError
toError(r.run(
^
sbt.compiler.EvalException: Type error in expression
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.
[warn] Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? (default: r)那么,对于Play sbt 2.8.6,我应该如何重写generateJOOQTask的代码呢?(我也不明白为什么播放的sbt插件会与jOOQ代码相关?)
带addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")的
$ sbt -java-home /usr/lib/jvm/jdk-11.0.1 generateJOOQ
[info] welcome to sbt 1.4.4 (Oracle Corporation Java 11.0.1)
[info] loading settings for project ch07-build from plugins.sbt ...
[info] loading project definition from /home/myname/projects/textbook/CH07/project
[info] Updating
[info] Resolved dependencies
[warn]
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes.
[warn] com.typesafe.play:sbt-plugin:2.5.10 (sbtVersion=1.0, scalaVersion=2.12)
[warn]
[warn] Note: Unresolved dependencies path:
[error] sbt.librarymanagement.ResolveException: Error downloading com.typesafe.play:sbt-plugin;sbtVersion=1.0;scalaVersion=2.12:2.5.10
[error] Not found
[error] Not found
[error] not found: https://repo1.maven.org/maven2/com/typesafe/play/sbt-plugin_2.12_1.0/2.5.10/sbt-plugin-2.5.10.pom
[error] not found: /home/myname/.ivy2/local/com.typesafe.play/sbt-plugin/scala_2.12/sbt_1.0/2.5.10/ivys/ivy.xml
[error] not found: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-plugin/scala_2.12/sbt_1.0/2.5.10/ivys/ivy.xml
[error] not found: https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-plugin/scala_2.12/sbt_1.0/2.5.10/ivys/ivy.xml
[error] at lmcoursier.CoursierDependencyResolution.unresolvedWarningOrThrow(CoursierDependencyResolution.scala:258)
[error] at lmcoursier.CoursierDependencyResolution.$anonfun$update$38(CoursierDependencyResolution.scala:227)
[error] at scala.util.Either$LeftProjection.map(Either.scala:573)
[error] at lmcoursier.CoursierDependencyResolution.update(CoursierDependencyResolution.scala:227)
[error] at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:60)
[error] at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:53)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:103)
[error] at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:116)
[error] at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:116)
[error] at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:97)
[error] at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error] at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:130)
[error] at sbt.Classpaths$.$anonfun$updateTask0$5(Defaults.scala:3485)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] at sbt.Execute.work(Execute.scala:291)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] at java.base/java.lang.Thread.run(Thread.java:834)
[error] (update) sbt.librarymanagement.ResolveException: Error downloading com.typesafe.play:sbt-plugin;sbtVersion=1.0;scalaVersion=2.12:2.5.10
[error] Not found
[error] Not found
[error] not found: https://repo1.maven.org/maven2/com/typesafe/play/sbt-plugin_2.12_1.0/2.5.10/sbt-plugin-2.5.10.pom
[error] not found: /home/myname/.ivy2/local/com.typesafe.play/sbt-plugin/scala_2.12/sbt_1.0/2.5.10/ivys/ivy.xml
[error] not found: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.play/sbt-plugin/scala_2.12/sbt_1.0/2.5.10/ivys/ivy.xml
[error] not found: https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.play/sbt-plugin/scala_2.12/sbt_1.0/2.5.10/ivys/ivy.xml
[warn] Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? (default: r)因此,使用Play sbt 2.5.10,现在看来sbt试图下载一个不存在的com.typesafe.play:sbt-plugin。
我如何知道正确的版本是什么,以及如何告诉sbt如何找到它?(我用build.sbt写的东西难道不足以让一个智能系统理解该做什么吗?)
发布于 2020-12-14 15:29:32
这
val generateJOOQTask = (baseDirectory, dependencyClasspath in Compile, runner in Compile, streams) map { (base, cp, r, s) =>
...
}是旧的sbt 0.13语法。代之以:
generateJOOQ := {
val base = baseDirectory.value
val cp = dependencyClasspath.in(Compile).value
val r = runner.in(Compile).value
val s = streams.value
...
}在SBT1.x中删除了toError方法,代之以
r.run(...).failed foreach (sys error _.getMessage)然后,这个:
generateJOOQ <<= generateJOOQTask被废弃的sbt 0.12语法。代之以
generateJOOQ := generateJOOQTask.value(注:我将此与上述val相结合)
https://stackoverflow.com/questions/65287759
复制相似问题