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

时间:2018-03-19 07:12:07

标签: scala sbt

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

1 个答案:

答案 0 :(得分:5)

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

crossTarget := baseDirectory.value / "myDirectory"

现在,如果您从sbt调用package任务,您将获得myDirectory/目录中的所有文件,包括jar,类和其他通常发送到target/scala-2.12/的内容。

如果您只想更改广告素材的位置,可以更改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 := ...

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