【发布时间】:2021-07-30 05:43:45
【问题描述】:
我已经使用https://www.playframework.com/getting-started play-scala-seed 创建了基本的 Scala Play 应用程序。该项目使用sbt run 编译和运行。但是我有另一个可以编译和运行的 Scala 项目,我已经使用命令sbt publishLocal 将其提交到我的本地 Ivy 存储库。由于此命令,此其他项目已保存在 C:\Users\tomr\.ivy2\local\com.agiintelligence\scala-isabelle_2.13\master-SNAPSHOT。
然后我在 IntelliJ 中导入(完全如此 - 导入,不是刚刚打开)我的 Play 项目,并使用 Project - Open Module Settings - Project Settings - Libraries 从我的 ivy2 位置添加 com.agiintelligence jar。在此类操作之后,IntelliJ 编辑器会识别 com.agiintelligence 类。没关系。
但是,当我尝试使用 sbt run 运行 Play 应用程序时,我遇到错误消息 not found: object com,这正是在 Play 应用程序的 Scala 控制器文件中编译 import com.agiintelligence 行时出现的错误消息。
当然 - 已报告并解决了此类错误,例如object play not found in scala application 但该解决方案建议附加 build.sbt 文件。我的 build.sbt 文件非常简单:
name := """agiintelligence"""
organization := "com.agiintelligence"
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.13.5"
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test
// Adds additional packages into Twirl
//TwirlKeys.templateImports += "com.skaraintelligence.controllers._"
// Adds additional packages into conf/routes
// play.sbt.routes.RoutesKeys.routesImport += "com.skaraintelligence.binders._"
我的 Play 应用程序包含(从 IntelliJ 项目窗格中可以看到)几十个“外部库”(它也显示了我的 com.agiintelligence jar),但是为什么我应该在 build.sbt 中添加我自己的 ivy2 库如果此处没有列出其他库,则文件?我的图书馆有什么不同?它已经在我的计算机上,在存储库中吗?
当然,我可以尝试添加它 build.sbt 并发出sbt update 看看会发生什么,但我无法理解这个逻辑?有人可以解释一下并为我的错误消息的可理解解决方案提供一些线索吗?
【问题讨论】:
-
您的应用程序是否依赖于
com.agiintelligence?然后在依赖项中列出它。为什么这样问? “它在我的计算机上,已经在我的存储库中” - 这很好,然后sbt将不必下载任何额外的东西。这不会改变您的应用程序依赖于com.agiintelligence的事实。 -
如果出现至少一张接近投票,那么我将删除我的问题。我不确定谁会从删除我的问题中受益,但我会删除它。我的观点是社区可以从这个 QA 中的建议和解释中受益,有时每一个提示和建议在缩小问题范围并尝试解决时都非常有价值。 OMG,作为开发人员,我知道!但是如果社区对这些信息进行了近距离投票,那么我一定会删除它,我不需要近距离投票。
标签: scala playframework ivy