运行sbt dist会产生如下所示的输出:
project_dir
|
|--- target/universal
|
|
|
| --- scripts
| |
| |--- blah.bat
| |--- blah (.sh file)
|
| --- blah-1.0-SNAPSHOT.zip (entire package zipped)
如何复制文件以使其最终位于target / universal / scripts文件夹中? Universal"中的任何"映射我尝试过的技巧导致我复制的文件以zip格式结束。
一个没有用的例子:
mappings in Universal ++=(baseDirectory.value / "scripts" * "*" get) map (x => x -> { x.setExecutable(true); baseDirectory.value.toString + "/test/" + x.getName;} )
答案 0 :(得分:1)
如果我理解你的问题你有两个问题。第一
如何复制文件以使其最终位于target / universal / scripts文件夹中
这很可能不是你想要的。 <{1}}文件夹只是一个临时文件夹,在压缩之前会生成脚本。
您可以使用几行scala
在任意目录中创建文件target/universal/scripts
请参阅:https://www.scala-sbt.org/1.x/api/sbt/io/AllPassFilter $。html 请参阅:https://www.scala-sbt.org/1.x/api/sbt/io/IO $。html
第二
我尝试过的任何“通用映射”技巧导致我复制的文件以zip结尾
这正是lazy val writeSomeFiles = taskKey[Seq[File]]("Creates some files")
writeSomeFiles := {
// `target/universal` folder
val universalTarget = (target in Universal).value
val sourceFiles = (baseDirectory.value ** AllPassFilter).get
val destFiles = sourceFiles.map(file => universalTarget / file.getNamae)
IO.copy(sourceFiles.zipWith(destFiles))
destFiles
}
的内容。您创建的包的内容(在本例中为zip文件)。 mappings in Universal
(或dist
)任务只返回一个文件,即创建的zip文件。
如果您打算运送您的包裹,那么这是处理事情的正确方法。
希望有所帮助, 缪奇