【发布时间】:2016-07-30 17:11:56
【问题描述】:
我现在使用 Akka、Play 框架、Scala 运行一个相对较小的项目,构建工具是 SBT。但是,我已经建立了一个比这个更大的项目,而且它的构建速度非常快。但是现在经过一段时间后,我正在尝试构建我的项目,并且编译需要很长时间(总时间:904 s)。
> ~/nlp-search/code(branch:feature/demo-app-api*) » sbt compile
> renienj@Rajani [info] Loading project definition from
> /Users/renienj/nlp-search/code/project [info] Set current project to
> nlp-search (in build file:/Users/renienj/nlp-search/code/) [info]
> Compiling 115 Scala sources and 1 Java source to
> /Users/renienj/nlp-search/code/target/scala-2.11/classes... [warn]
> /Users/renienj/nlp-search/code/app/api/parsedquery/ParsedQuery.scala:14:
> imported `format' is permanently hidden by definition of value format
> in object ParsedQuery [warn] import Sentence.format [warn]
> ^ [warn]
> /Users/renienj/nlp-search/code/app/api/parsedquery/Sentence.scala:14:
> imported `format' is permanently hidden by definition of value format
> in object Sentence [warn] import Phrase.format [warn]
> ^ [warn]
> /Users/renienj/nlp-search/code/app/api/parsedquery/Sentence.scala:15:
> imported `format' is permanently hidden by definition of value format
> in object Sentence [warn] import Filter.format [warn]
> ^ [warn]
> /Users/renienj/nlp-search/code/app/api/parsedquery/Sentence.scala:16:
> imported `format' is permanently hidden by definition of value format
> in object Sentence [warn] import Order.format [warn]
> ^ [warn]
> /Users/renienj/nlp-search/code/app/backend/intelligenceServices/nlp/executor/StreamExecutor.scala:23:
> abstract type pattern OT is unchecked since it is eliminated by
> erasure [warn] case x: OT => [warn] ^ [warn]
> /Users/renienj/nlp-search/code/app/backend/intelligenceServices/merchRules/io/DAO.scala:27:
> method newTermName in trait Names is deprecated: Use TermName instead
> [warn] String.valueOf(x.map(x => x.toChar)).unpickle[MerchRule]
> [warn] ^ [warn]
> /Users/renienj/nlp-search/code/app/backend/solrAccess/cache/SolrCacheProvider.scala:24:
> method newTermName in trait Names is deprecated: Use TermName instead
> [warn] x.pickle.value [warn] ^ [warn]
> /Users/renienj/nlp-search/code/app/backend/solrAccess/cache/SolrCacheProvider.scala:30:
> method newTermName in trait Names is deprecated: Use TermName instead
> [warn] BinaryPickle(x).unpickle[DocumentList] [warn]
> ^ [warn] there were 9 feature warnings; re-run with -feature for
> details [warn] 9 warnings found [success] Total time: 904 s, completed
> Apr 9, 2016 5:07:09 PM
我的 build.sbt :
name := """nlp-search"""
version := """3.0-RC1"""
lazy val root = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.11.7"
resolvers += Resolver.mavenLocal
val akkaVersion = "2.3.12"
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-contrib" % akkaVersion,
"com.typesafe.akka" %% "akka-remote" % akkaVersion,
"com.typesafe.akka" %% "akka-cluster" % akkaVersion,
"com.typesafe.akka" %% "akka-testkit" % akkaVersion,
"org.apache.solr" % "solr-solrj" % "4.10.0",
"org.apache.thrift" % "libthrift" % "0.9.2",
"org.json" % "json" % "20080701",
"org.skife.com.typesafe.config" % "typesafe-config" % "0.3.0",
"net.debasishg" %% "redisclient" % "2.13",
"org.scala-lang.modules" %% "scala-pickling" % "0.10.0",
"edu.stanford.nlp" % "stanford-parser" % "3.5.2",
"edu.stanford.nlp" % "stanford-corenlp" % "3.5.2",
"org.scalatest" % "scalatest_2.11" % "2.2.4" % "test",
"com.kohls.search.qp" % "api" % "1.0.0",
"com.typesafe.akka" %% "akka-stream-experimental" % "1.0"
)
libraryDependencies += specs2 % Test
resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"
publishArtifact in (Compile, packageDoc) := false
publishArtifact in packageDoc := false
sources in (Compile,doc) := Seq.empty
我从早上开始就在挣扎。我真的不明白为什么要花这么长时间。
非常感谢您。
【问题讨论】:
-
它是否包含大量动态生成 JSON 读取器和写入器的宏隐式?对我来说是个杀手。我缓存了隐式并将构建时间从 5 多分钟缩短到大约 30 秒。
-
是的,我有 8 个隐式来生成复杂的 JSON。你能不能给我看一个样品来试试。你用过无形库吗?感谢您的评论。
-
我正在使用 upickle 和 bsonpickle。我像这样预先计算和缓存我所有的隐式:
object JsonSerialization { implicit lazy val userReader = { val userReader = (); macroR[User] }; … } -
你可能还想看看
cachedImplicitin shapeless。 -
非常感谢@Jean-PhilippePellet。你为什么不移动评论来回答,这样问题就完成了。
标签: scala playframework sbt akka typesafe-activator