sbt插件是';从子模块中提取t?

sbt插件是';从子模块中提取t?,sbt,multi-module,Sbt,Multi Module,我正在尝试将一个模块项目转换为两个模块,并使用 根聚集体。感觉像是正常的事情 因此,为了简化,我删除了我添加的第二个项目,但是 做一些类似于: cd myproject mkdir core mv * core 然后在myproject中添加build.sbt,如 lazy val root = project.in( file(".") ).aggregate(core) lazy val core = project in file("core") 然而,尝试构建核心我得到: [mypr

我正在尝试将一个模块项目转换为两个模块,并使用 根聚集体。感觉像是正常的事情

因此,为了简化,我删除了我添加的第二个项目,但是 做一些类似于:

cd myproject
mkdir core
mv * core
然后在myproject中添加build.sbt,如

lazy val root = project.in( file(".") ).aggregate(core)
lazy val core = project in file("core")
然而,尝试构建核心我得到:

[myproject]/core/build.sbt:22:错误:找不到:无值设置 序号(lessSettings:u*)

这是在的project/plugins.sbt中添加的插件的设置 原来的项目现在正在进行中

[myproject]/core/project/plugins.sbt
这怎么没被捡起来?我不能让插件只存在于 子模块?cd:插入核心子模块并运行sbt,工作正常。我有吗
将我的插件移动到root/project?请注意,不可能是这样吗?

您的
插件.sbt
文件被忽略,因为您不能在多项目生成的子项目中拥有
项目
子文件夹

在一个

  • 根项目的
    .sbt
    文件以及所有子项目的所有
    .sbt
    文件都是单个生成定义的一部分。子项目中定义的设置只是自动限定到该项目的范围

  • 由于只有一个生成定义,因此只有一个项目要生成该生成定义,该项目位于根项目的
    project/
    文件夹中。子项目的所有
    project/
    文件夹将被忽略

在您的情况下,将
plugin.sbt
移动到buildroot
project
文件夹应该会使您的插件再次出现


此外,如果您只处理
core
项目,而不是在core中运行
sbt
,那么您可以在根项目中运行
sbt
,然后键入
project core
“移动”(实际上,范围是您所做的一切)到核心子项目。

:(害怕这种情况。这意味着我只有一个。)“插件范围"所以说xsbt web插件会污染我的核心构建,这可能不是一个web项目。对我来说,感觉像是一个破碎的体系结构。理想的情况是能够通过指向不同的项目组成一个多模块项目。这并不像看起来的那么糟糕。插件不会污染不导入其设置的项目。有了xsbt web插件,您只需从每个不适用的子模块中省略
WebPlugin.webSettings
。有关示例,请参见。同意。但是,我仍然觉得这是一个体系结构问题,因为它不可能通过简单地将项目称为聚合来进行聚合。子模块的构建始终依赖于supermodule.@hedefalk我也将其视为一个架构问题。SBT文档说子项目应该作为自己的单元运行。转述一下。遗憾的是,它已经9个月没有修复了…将不得不加入开发组进行通知。插件可以添加到多模块构建中的单个模块中吗?