我的项目分为多个部分: *核心项目 * utils(例如)项目
他们都有一些单元测试,"核心项目"依赖" utils"中的代码项目由"依赖" sbt的机制。
我正在使用sbt-assembly plugin构建" uber-jar" /" fat-jar",但是sbt assembly
任务不会对utils项目进行测试 - 这就是我想要实现的目标(我无法看到" utils项目中的任何测试"在日志中)
改变"依赖" to"聚合"介绍新问题:
sbt assembly aggregate deduplicate
类似于此issue-on-github
的内容所以我的问题是如何组织可由sbt-assembly
汇编的多模块项目,并且所有测试都在汇编任务期间执行?
答案 0 :(得分:0)
我的猜测是你应该在子项目之间同时拥有dependsOn和聚合关系。它们不是相互排斥的,只是用于不同的目的。
DependsOn引入了代码依赖性,因此如果core依赖于utils,则意味着您可以从core中的utils引用类型。
Aggregate引入了任务依赖性。这意味着如果您在核心上执行编译或测试并且它聚合了utils,那么任务将在两个子项目上执行。
重复数据删除的问题是另一个野兽 - 这意味着,在尝试创建一个jar时,资源或类中存在重复项。原因可能各不相同,您可以通过验证构建中的库依赖项或创建MergeStrategy来解决它们 - https://github.com/sbt/sbt-assembly#merge-strategy