sbt插件没有从子模块中获取?

Vik*_*alk 6 sbt multi-module

我正在尝试将单个模块项目转换为具有根聚合的两个模块.感觉像是正常的事情.

所以,为了简化我删除了我添加的第二个项目,但我做了类似的事情:

cd myproject
mkdir core
mv * core
Run Code Online (Sandbox Code Playgroud)

然后在myproject中添加一个build.sbt

lazy val root = project.in( file(".") ).aggregate(core)
lazy val core = project in file("core")
Run Code Online (Sandbox Code Playgroud)

但是,尝试构建核心我得到:

[myproject] /core/build.sbt:22:错误:找不到:值lessSettings seq(lessSettings:_*)

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

[myproject]/core/project/plugins.sbt
Run Code Online (Sandbox Code Playgroud)

怎么没有拿起来?我不能只在子模块中生活插件吗?cd:进入核心子模块并运行sbt它运行得很好.我必须将我的插件移动到root/project吗?相当不错,不是这样吗?

gou*_*ama 8

您的plugin.sbt文件将被忽略,因为您无法project在多项目构建的子项目中拥有子文件夹.

多项目构建中,

  • .sbt根项目的文件和所有.sbt各子项目的文件,是各部分单独构建定义.子项目中定义的设置只是自动作用于该项目.

  • 由于只有一个构建定义,因此只有一个项目可以构建该构建定义,并且该project/项目位于根项目的文件夹中.project/子项目的所有文件夹都将被忽略.

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

此外,如果您只处理core项目,而不是sbt在核心中运行sbt,则可以在根项目中运行并键入project core"移动"(实际上,将您执行的所有操作)放到核心子项目中.

  • :(担心情况确实如此.这意味着我只有一个"插件范围",所以说xsbt-web-plugin会污染我的核心版本,这可能不是一个web项目.感觉就像一个破碎的架构到me.理想的是能够通过指向不同的项目来组成一个多模块项目. (2认同)
  • 它没有看起来那么糟糕.插件不会污染不导入其设置的项目.使用xsbt-web-plugin,您只需从每个不适用的子模块中省略`WebPlugin.webSettings`.有关示例,请参阅[xwp-template的多项目分支](https://github.com/earldouglas/xwp-template/blob/multi-project/project/Build.scala). (2认同)