Playframework 使用sbt native packager,如何在tar.gz文件中添加基本目录?

Playframework 使用sbt native packager,如何在tar.gz文件中添加基本目录?,playframework,sbt,sbt-native-packager,Playframework,Sbt,Sbt Native Packager,我的项目使用Play Framework 2.3.7,它使用sbt 0.13.5、sbt native packager和Activator 1.2.12,我正在使用生成tar.gz文件 activator universal:package-bin 生成的tar.gz文件包括目录conf、bin、share和conf 我需要tar.gz文件中的基本目录/opt/my_application/,结果是: /opt/my_application/conf /opt/my_application/

我的项目使用Play Framework 2.3.7,它使用sbt 0.13.5、sbt native packager和Activator 1.2.12,我正在使用生成tar.gz文件

activator universal:package-bin
生成的tar.gz文件包括目录conf、bin、share和conf

我需要tar.gz文件中的基本目录/opt/my_application/,结果是:

/opt/my_application/conf
/opt/my_application/bin
我在build.sbt中尝试了几个映射组合,但没有成功


谢谢

另一种选择是添加一个sbt任务来调用bash脚本:

lazy val generateTarGz = taskKey[Unit]("Generate tar.gz file")

generateTarGz := {
    "build.sh" !    
}
然后你打电话:

activator clean stage generateTarGz
bash脚本将被调用并生成一个target/universal/stage/*的tar.gz

您应该能够在Universal中重新映射现有映射 如上所述。我应该看看 像这样的

mappings in Universal := {
    val universalMappings = (mappings in Universal).value
    val appName = name.value
    universalMappings map {
        case (file, path) =>  (file, s"$appName/$path")
    }
}

你们都可以在sbt内部完成。除非同时提供bat脚本,否则使用shell脚本将排除所有windows用户。这也使得构建比实际更复杂。感谢这段代码,差不多就这样了。将文件路径更改为/opt/myapp/$path会使tar.gz中的路径变为/myapp-0.0.1-SNAPSHOT/opt/myapp/$path。这里的问题是作为基本目录的应用程序名称和版本。我怎样才能解决这个问题?有一个解决方案可以解决这个问题。