gpt4 book ai didi

scala - 如何(重新)定义在根项目上运行以在 sbt 0.13 中启动聚合的 Play(子)项目

转载 作者:行者123 更新时间:2023-12-04 16:39:46 24 4
gpt4 key购买 nike

我正在尝试创建一个多项目 SBT 构建定义。我在执行 run 时遇到问题命令在我的根项目上。

文件夹结构如下:

RootProjectFolder
|
|- build.sbt
|- project
|
|-Build.scala
|-plugins.sbt
|
| - play-webapp
Build.scala的内容文件是:
import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {

val appName = "project-name"
val appVersion = "0.1.0-SNAPSHOT"


lazy val root = Project(id = appName + "-root",
base = file(".")
).aggregate(webApp)


lazy val webApp = play.Project(
appName + "-website", appVersion, path = file("play-webapp")
)

}

当我启动 SBT 时,我收到以下消息: Set current project to project-name-root这意味着正确检测到根项目。

当我执行 run命令我收到以下错误消息
> run
java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last project-name-root/compile:run for the full output.
[error] (project-name-root/compile:run) No main class detected.

错误消息正确地说根项目没有任何类,但 play-webapp 项目有。我认为结果将是运行播放应用程序。

如果我输入 project play-webapp之前 run一切似乎都很好。

这是正确的行为吗?还是我做错了什么?

附言我使用的是 SBT 0.13 版和 Scala 2.10.3 版

最佳答案

另一种方法是重新定义运行:

lazy val root = Project("root", file("."))
.aggregate(subproject)
.settings(
run := {
(run in subproject in Compile).evaluated
}
)

lazy val subproject = Project(...)

关于scala - 如何(重新)定义在根项目上运行以在 sbt 0.13 中启动聚合的 Play(子)项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com