如何在build.sbt中获取当前目标目录的路径

时间:2019-03-08 14:53:13

标签: scala sbt

在我的build.sbt中,我想知道当前的目标文件。像这样:

val targetFile = ??? // /home/fbaierl/Repos/kcc/scala/com.github.fbaierl/target/scala-2.12/myapplication_2.12-1.2.3-SNAPSHOT.jar

使用target.value只能得到目录直到/ target。有什么方法可以获取生成的jar的完整路径?

2 个答案:

答案 0 :(得分:2)

您需要的是compile:package的返回值。

运行sbt "show compile:package",看它会打印出您要构建的工件的完整路径。

如果您只需要路径而无需构建工件,请执行sbt "show Compile / packageBin / artifactPath"

要在build.sbt中使用此值,必须像这样定义tasksetting

val targetFile = taskKey[File]("shows target file")

targetFile := {
  val path = artifactPath.in(packageBin).in(Compile).value
  //same as val path = (Compile / packageBin / artifactPath).value
  streams.value.log.info(path.toPath.toString)
  path
}

sbt中任何任务的值都不能直接分配给val someFile: File之类的值。您必须根据设置和任务编写自定义逻辑。

答案 1 :(得分:1)

在最新的1.x样式中,它应该类似于

  val targetFile: File = (Compile / packageBin / artifactPath).value