在sbt中,如果我们执行package
,将在target/scala-2.12/XXX.jar
生成一个jar文件。但我想将jar文件放在myDirectory/XXX.jar
。我该怎么做?
答案 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中的工件。