如何在脚本文件夹中包含“sbt dist”在target/universal中生成的附加文件?

如何在脚本文件夹中包含“sbt dist”在target/universal中生成的附加文件?,sbt,sbt-native-packager,sbt-plugin,Sbt,Sbt Native Packager,Sbt Plugin,运行sbt dist产生如下输出: project_dir | |--- target/universal | | | | --- scripts | | | |--- blah.bat | |--- blah (.sh file) | | --- blah

运行sbt dist产生如下输出:

    project_dir 
  | 
  |--- target/universal
          |
          |
          |
          | --- scripts
          |        |
          |        |--- blah.bat
          |        |--- blah (.sh file)
          |
          | --- blah-1.0-SNAPSHOT.zip (entire package zipped)
如何复制文件,使其最终位于target/universal/scripts文件夹中?我尝试的任何通用技巧中的映射都会导致我复制的文件最终出现在zip中

一个不起作用的例子:

mappings in Universal ++=(baseDirectory.value / "scripts" * "*" get) map (x => x -> { x.setExecutable(true); baseDirectory.value.toString + "/test/" +  x.getName;} )

如果我正确理解你的问题,你有两个问题。首先

如何复制文件,使其最终位于target/universal/scripts文件夹中

这很可能不是你想要的。目标/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
}
请参阅:$.html 请参阅:$.html

第二:

我尝试的任何通用技巧中的映射都会导致我复制的文件最终出现在zip中

这正是Universal中的映射。本例中创建的包的内容为zip文件。dist或universal:packageBin任务只返回一个文件,即创建的zip文件

如果你计划运送包裹,那么这是正确的处理方式

希望有帮助,
Muki

谢谢Muki-我之所以尝试将其他脚本复制到脚本文件夹中,是因为我需要一个脚本来解压包、更新符号链接和执行一些部署后活动。我希望这个脚本也受源代码控制,并且作为项目的一部分进行部署。