sbt-assembly多模块项目?

时间:2017-11-13 15:20:12

标签: scala sbt sbt-assembly

我的项目分为多个部分:  *核心项目  * utils(例如)项目

他们都有一些单元测试,"核心项目"依赖" utils"中的代码项目由"依赖" sbt的机制。

我正在使用sbt-assembly plugin构建" uber-jar" /" fat-jar",但是sbt assembly任务不会对utils项目进行测试 - 这就是我想要实现的目标(我无法看到" utils项目中的任何测试"在日志中)

改变"依赖" to"聚合"介绍新问题:

  

sbt assembly aggregate deduplicate

类似于此issue-on-github

的内容

所以我的问题是如何组织可由sbt-assembly汇编的多模块项目,并且所有测试都在汇编任务期间执行?

1 个答案:

答案 0 :(得分:0)

我的猜测是你应该在子项目之间同时拥有dependsOn和聚合关系。它们不是相互排斥的,只是用于不同的目的。

DependsOn引入了代码依赖性,因此如果core依赖于utils,则意味着您可以从core中的utils引用类型。

Aggregate引入了任务依赖性。这意味着如果您在核心上执行编译或测试并且它聚合了utils,那么任务将在两个子项目上执行。

重复数据删除的问题是另一个野兽 - 这意味着,在尝试创建一个jar时,资源或类中存在重复项。原因可能各不相同,您可以通过验证构建中的库依赖项或创建MergeStrategy来解决它们 - https://github.com/sbt/sbt-assembly#merge-strategy