Eli*_*lay 6 scala multi-project subproject sbt
我有一堆子项目,我定义如下(实际上由 a 生成project/meta.sbt):
lazy val Top = (project in file("."))
.aggregate(common, p1, p2, tests, scripts)
.dependsOn(common, p1, p2, tests, scripts)
lazy val common = project
lazy val p1 = project.dependsOn(common % "compile->compile;test->test")
lazy val p2 = project.dependsOn(common % "compile->compile;test->test")
lazy val tests = project.dependsOn(common % "compile->compile;test->test")
lazy val scripts = project
Run Code Online (Sandbox Code Playgroud)
AFAICT(所以也许这是错误的),顶部的aggregate和dependsOn都有意义:第一个在所有子项目中运行任务,第二个方便调试东西。
现在,问题是它只tests包含一堆测试,并且scripts是一个用作发布步骤的脚本——所以我需要以某种方式使其避免仅为它们创建 jar 文件。我仍然希望compile/ test/etc 被聚合,包括它们。
我对文档的理解是,这应该通过aggregate在 中设置密钥来完成Top,并且实际上添加类似的内容
.settings(aggregate in clean:= false)
Run Code Online (Sandbox Code Playgroud)
防止clean被聚合——但我想这样做,package并且不想完全放弃它,只是不打包这两个子项目。使用类似的东西aggregate in (tests, packageBin)是我最好的猜测,但这似乎并没有给 SBT 留下印象:看起来packageBin是错误的,而且将它与 结合起来也tests不起作用。
那可能吗?事实上,考虑到 SBT 只是稍微有点过度设计,它总是可能的,所以换句话说:我怎样才能做到这一点?
感谢这个答案,我找到了一个解决方法——添加:
.settings(Keys.`package` := file(""))
Run Code Online (Sandbox Code Playgroud)
不应打包的子项目的定义。这可以避免生成 jar 文件,但显然不是实际问题的答案(我可能会再次遇到这个问题)。
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |