sbt 无法使用 ProjectRef 切换到从 github 导入的项目
sbt cannot switch to project imported from github using ProjectRef
我有一个 sbt (Play) 应用程序需要依赖另一个 sbt(play) 多模块应用程序。我使用 ProjectRef
导入了它,我的本地应用程序 build.sbt
如下
lazy val aaaroot = ProjectRef(uri("https://github.com/abcd/abcd.git"), "aaaroot")
lazy val core = ProjectRef(uri("https://github.comabcd/abcd.git"), "core")
lazy val zeusEvolutions = ProjectRef(uri("https://github.com/abcd/abcd.git"), "zeusEvolutions")
lazy val aaaaaaaroot = (project in file(".")).enablePlugins(PlayJava).dependsOn(aaaroot, core, zeusEvolutions).aggregate(aaaroot, core, zeusEvolutions)
SBT 控制台显示项目已正确导入,如
[play-multiple] $ projects
[info] In file:/Users/RP/LeanTaaS/play-multiple/
[info] * aaaaaaaroot
[info] In https://github.com/abcd/abcd.git
[info] aaaroot
[info] core
[info] zeusEvolutions
但是我切换到从 github 导入的项目,它说 Not a valid project
。
[play-multiple] $ project aaaroot
[error] Not a valid project ID: aaaroot (similar: aaaaaaaroot)
[error] project aaaroot
[error] ^
[play-multiple] $ project core
[error] Not a valid project ID: core
[error] project core
[error] ^
这是我的问题之一,实际问题是当我将我的应用程序路由引用到导入项目的路由时,找不到它们。我认为这个问题可能是实际问题的根本原因。
有人可以帮我吗?
我了解到您不能切换到使用 project <project_id>
的项目,除非它是 Project
。 http://www.scala-sbt.org/0.13/docs/Command-Line-Reference.html#General+commands
我能够通过在虚拟根项目中将我的子应用程序声明为 sub-project 来解决我的实际问题(在另一个播放应用程序中引用一个播放应用程序)。不知道确切原因是什么,但经过多次尝试和源代码调试,这种方法是有效的
现在我的构建看起来像,
lazy val aaaroot = ProjectRef(uri("https://github.com/abcd/abcd.git"), "aaaroot")
lazy val core = ProjectRef(uri("https://github.comabcd/abcd.git"), "core")
lazy val zeusEvolutions = ProjectRef(uri("https://github.com/abcd/abcd.git"), "zeusEvolutions")
lazy val aaaaaaaroot = (project in file(".")).enablePlugins(PlayJava).dependsOn(aaaapp, aaaroot, core, zeusEvolutions).aggregate(aaaapp, aaaroot, core, zeusEvolutions)
lazy val aaaapp = (project in file("modules/play-multiple)......
这应该有效:
[play-multiple] $ project {file:/Users/RP/LeanTaaS/play-multiple/aaaroot}
您还将在此处获得制表符完成功能。例如,输入 project {
,然后输入 <TAB>
。
虽然不漂亮,但很管用。
我有一个 sbt (Play) 应用程序需要依赖另一个 sbt(play) 多模块应用程序。我使用 ProjectRef
导入了它,我的本地应用程序 build.sbt
如下
lazy val aaaroot = ProjectRef(uri("https://github.com/abcd/abcd.git"), "aaaroot")
lazy val core = ProjectRef(uri("https://github.comabcd/abcd.git"), "core")
lazy val zeusEvolutions = ProjectRef(uri("https://github.com/abcd/abcd.git"), "zeusEvolutions")
lazy val aaaaaaaroot = (project in file(".")).enablePlugins(PlayJava).dependsOn(aaaroot, core, zeusEvolutions).aggregate(aaaroot, core, zeusEvolutions)
SBT 控制台显示项目已正确导入,如
[play-multiple] $ projects
[info] In file:/Users/RP/LeanTaaS/play-multiple/
[info] * aaaaaaaroot
[info] In https://github.com/abcd/abcd.git
[info] aaaroot
[info] core
[info] zeusEvolutions
但是我切换到从 github 导入的项目,它说 Not a valid project
。
[play-multiple] $ project aaaroot
[error] Not a valid project ID: aaaroot (similar: aaaaaaaroot)
[error] project aaaroot
[error] ^
[play-multiple] $ project core
[error] Not a valid project ID: core
[error] project core
[error] ^
这是我的问题之一,实际问题是当我将我的应用程序路由引用到导入项目的路由时,找不到它们。我认为这个问题可能是实际问题的根本原因。
有人可以帮我吗?
我了解到您不能切换到使用 project <project_id>
的项目,除非它是 Project
。 http://www.scala-sbt.org/0.13/docs/Command-Line-Reference.html#General+commands
我能够通过在虚拟根项目中将我的子应用程序声明为 sub-project 来解决我的实际问题(在另一个播放应用程序中引用一个播放应用程序)。不知道确切原因是什么,但经过多次尝试和源代码调试,这种方法是有效的
现在我的构建看起来像,
lazy val aaaroot = ProjectRef(uri("https://github.com/abcd/abcd.git"), "aaaroot")
lazy val core = ProjectRef(uri("https://github.comabcd/abcd.git"), "core")
lazy val zeusEvolutions = ProjectRef(uri("https://github.com/abcd/abcd.git"), "zeusEvolutions")
lazy val aaaaaaaroot = (project in file(".")).enablePlugins(PlayJava).dependsOn(aaaapp, aaaroot, core, zeusEvolutions).aggregate(aaaapp, aaaroot, core, zeusEvolutions)
lazy val aaaapp = (project in file("modules/play-multiple)......
这应该有效:
[play-multiple] $ project {file:/Users/RP/LeanTaaS/play-multiple/aaaroot}
您还将在此处获得制表符完成功能。例如,输入 project {
,然后输入 <TAB>
。
虽然不漂亮,但很管用。