首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级Play/Scala/SBT/jOOQ/HSQLDB应用程序时出错

升级Play/Scala/SBT/jOOQ/HSQLDB应用程序时出错
EN

Stack Overflow用户
提问于 2020-12-14 10:57:24
回答 1查看 167关注 0票数 0

我正在尝试升级play/scala/sbt/jooq/hsqdb项目的依赖项。但是,当我试图通过jOOQ从HSQLDB表生成类时,我会得到以下错误。

build.sbt

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
sbt.version=1.4.4

--我尝试用jOOQ生成类,但是我得到了错误(但在升级依赖项之前,它通常是工作的):

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.6")

代码语言:javascript
复制
$ 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")

代码语言:javascript
复制
$ 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写的东西难道不足以让一个智能系统理解该做什么吗?)

EN

回答 1

Stack Overflow用户

发布于 2020-12-14 15:29:32

代码语言:javascript
复制
val generateJOOQTask = (baseDirectory, dependencyClasspath in Compile, runner in Compile, streams) map { (base, cp, r, s) =>
  ...
}

是旧的sbt 0.13语法。代之以:

代码语言:javascript
复制
generateJOOQ := {
  val base = baseDirectory.value
  val cp = dependencyClasspath.in(Compile).value
  val r = runner.in(Compile).value
  val s = streams.value

  ...
}

在SBT1.x中删除了toError方法,代之以

代码语言:javascript
复制
r.run(...).failed foreach (sys error _.getMessage)

然后,这个:

代码语言:javascript
复制
generateJOOQ <<= generateJOOQTask

被废弃的sbt 0.12语法。代之以

代码语言:javascript
复制
generateJOOQ := generateJOOQTask.value

(注:我将此与上述val相结合)

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

https://stackoverflow.com/questions/65287759

复制
相关文章

相似问题

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