Как я могу получить путь к текущему целевому каталогу в моем build.sbt - PullRequest
1 голос
/ 08 марта 2019

В моем 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. Есть ли способ получить полный путь к полученному банку?

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Что вам нужно, это возвращаемое значение compile:package.

Запустите sbt "show compile:package", чтобы увидеть, что он печатает полный путь к артефакту, который вы строите.

Если вам просто нужен путь без создания артефакта, выполните sbt "show Compile / packageBin / artifactPath"

Чтобы использовать это значение в build.sbt, вы должны определить task или setting, как это

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 голос
/ 08 марта 2019

В последнем стиле 1.x это должно быть что-то вроде

  val targetFile: File = (Compile / packageBin / artifactPath).value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...