Playframework 使用sbt native packager,如何在tar.gz文件中添加基本目录?
我的项目使用Play Framework 2.3.7,它使用sbt 0.13.5、sbt native packager和Activator 1.2.12,我正在使用生成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/
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。这里的问题是作为基本目录的应用程序名称和版本。我怎样才能解决这个问题?有一个解决方案可以解决这个问题。