繁体   English   中英

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

[英]How can I get the path to the current target directory in my build.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的完整路径?

你需要的是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,例如val someFile: File 您必须根据设置和任务编写自定义逻辑。

在最近的1.x风格中,它应该是类似的

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM