【问题标题】:sbt-assembly multimodule project?sbt-assembly 多模块项目?
【发布时间】:2018-04-26 07:59:36
【问题描述】:

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

他们都有一些单元测试,“核心项目”通过sbt的“dependsOn”机制依赖“utils”项目中的代码。

我正在使用sbt-assembly plugin 构建“uber-jar”/“fat-jar”,但sbt assembly 任务不会在 utils 项目上运行测试 - 这是我想要实现的(我看不到日志中来自“utils project”的任何测试)

将“dependsOn”改为“aggregate”会引入新问题:

sbt 程序集聚合去重

类似issue-on-github的东西


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

【问题讨论】:

    标签: scala sbt sbt-assembly


    【解决方案1】:

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

    DependsOn 引入了代码依赖,所以如果 core 依赖于 utils 就意味着你可以从 core 中的 utils 中引用类型。

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 2018-11-18
      • 1970-01-01
      • 2018-05-27
      • 2015-11-10
      • 2021-12-02
      • 2016-10-01
      • 2015-02-26
      • 1970-01-01
      相关资源
      最近更新 更多