Scala:SBT 为每个阶段捆绑不同的库依赖项

Posted

技术标签:

【中文标题】Scala:SBT 为每个阶段捆绑不同的库依赖项【英文标题】:Scala: SBT bundle different library dependencies for each stage 【发布时间】:2018-04-08 05:55:41 【问题描述】:

我有一个使用SBT 构建的Scala 项目。在build.sbt 中,我想捆绑一些仅在test 阶段而不是package 阶段使用的库依赖项。

例如,

如果我运行:sbt test,我可能希望库依赖于 scala-test,但如果我运行 sbt package,我不希望依赖于 scala-test

我怎样才能做到这一点?

【问题讨论】:

% "test"放在依赖的末尾 @SethTisue 当我这样做时,运行时 jar 仍然会被拉出:“sbt package”。我希望只有在我进行“sbt test”时才将其拉出。在cache/.ivy2目录下可以看到 我认为您必须将测试代码放在不同的子项目中。 但是,我想知道检索依赖项有什么问题。如果依赖项不在任何不适当的上下文中的类路径上,并且在您运行package 时实际上没有捆绑,那么检索它有什么问题?好奇。 @SethTisue 第一条评论对我有用。谢谢。如果你能“回复”我的问题,我就能“接受”它。 【参考方案1】:

% "test" 放在依赖项的末尾,你就可以开始了!

【讨论】:

以上是关于Scala:SBT 为每个阶段捆绑不同的库依赖项的主要内容,如果未能解决你的问题,请参考以下文章

使用 SBT 和 Scala IDE 添加和删除依赖项

Sbt 0.13 插件依赖和 scala-reflect.jar 版本冲突

为啥 sbt 报告缺少 Scala 2.10.2 的库(自 8 月 1 日起)?

SBT 插件 %%% 在哪里定义?

sbt无法在项目中导入两个不同版本的elasticsearch库

Scala SBT - sbt-native-packager,如何指定自定义阶段目录