在我的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 :(得分:2)
您需要的是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 :(得分:1)
在最新的1.x样式中,它应该类似于
val targetFile: File = (Compile / packageBin / artifactPath).value