代码之家  ›  专栏  ›  技术社区  ›  Florian Baierl

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

  •  0
  • Florian Baierl  · 技术社区  · 7 年前

    在我的 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的完整路径吗?

    0 回复  |  直到 7 年前
        1
  •  2
  •   Ivan Stanislavciuc    7 年前

    你需要的是 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 val someFile: File

        2
  •  1
  •   Andrey Tyukin    7 年前

    在最近的1.x样式中,应该是

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