运行sbt dist产生的输出看起来像这样:
project_dir
|
|--- target/universal
|
|
|
| --- scripts
| |
| |--- blah.bat
| |--- blah (.sh file)
|
| --- blah-1.0-SNAPSHOT.zip (entire package zipped)
如何复制文件,以使其最终放在目标/通用/脚本文件夹中?我尝试过的任何"通用映射"技巧中的任何"映射"都会导致我要复制在zip中的文件。
一个不起作用的例子:
mappings in Universal ++=(baseDirectory.value / "scripts" * "*" get) map (x => x -> { x.setExecutable(true); baseDirectory.value.toString + "/test/" + x.getName;} )
如果我正确理解您的问题,您有两个问题。首先
我如何复制文件,以使其最终出现在目标/通用/脚本文件夹中
这很可能不是您想要的。target/universal/scripts
文件夹不过是临时文件夹是在被拉开之前生成的脚本。
您可以用几行Scala
在任意目录中创建文件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
}
请参阅:https://www.scala-sbt.org/1.x/api/sbt/io/allpassfilter$.html请参阅:https://www.scala-sbt.org/1.x/api/sbt/io/ioqu.html
第二:
我尝试过的任何"通用映射"技巧都会导致我要复制的文件,最终在zip
中
这正是mappings in Universal
。您创建的软件包的内容(在这种情况下为zip文件(。dist
(或universal:packageBin
(任务正好返回一个文件,即创建的zip文件。
如果您打算运送包裹,那么这是处理物品的正确方法。
希望有帮助,muki