如何将jar打包到sbt中的给定目录?

蘇哲聖*_*蘇哲聖 4 scala sbt

在sbt中,如果我们执行package,将生成一个jar文件target/scala-2.12/XXX.jar.但我想把jar文件放在myDirectory/XXX.jar.我该怎么做?

lau*_*lic 6

target/默认路径的一部分由target设置键scala-2.12/定义,部分由crossTarget设置定义(因为您可以针对不同版本的Scala进行交叉编译).所以一个简单的解决方案是将此添加到您的build.sbt:

crossTarget := baseDirectory.value / "myDirectory"
Run Code Online (Sandbox Code Playgroud)

现在,如果你package从sbt 调用任务,你将获得myDirectory/目录的所有文件,包括jar,类和其他通常会发生的东西target/scala-2.12/.

如果只想更改jar的位置,可以更改artifactPath设置.但是你应该在正确的范围内设置它并使用jar文件名:

artifactPath in packageBin in Compile := baseDirectory.value / "myDirectory" / "XXX.jar"

// if you're using sbt 1.1+, you can also write like this:
Compile/packageBin/artifactPath := ...
Run Code Online (Sandbox Code Playgroud)

如果你有一个非平凡的设置,这很容易变得更加复杂和混乱.因此,请检查sbt源以了解如何artifactPath实际定义设置并阅读sbt文档中的工件.