在publishTo
文件中使用build.sbt
,它可以是automation the publishing progress。
但是资产文件(在public
文件夹中)没有打包。如何打包和发布资产文件?
答案 0 :(得分:2)
对于本地发布资源文件,请在build.sbt
文件
import play.PlayImport.PlayKeys._
packagedArtifacts in publishLocal := {
val artifacts: Map[sbt.Artifact, java.io.File] = (packagedArtifacts in publishLocal).value
val assets: java.io.File = (playPackageAssets in Compile).value
artifacts + (Artifact(moduleName.value, "jar", "jar", "assets") -> assets)
}
上一个功能行中的重要说明:
第一个jar
指定包类型文件夹(因为webJars添加为java依赖项,它们应放在jars文件夹中)。
第二个jar
指定打包文件的扩展。
assets
是分类器(more information about sbt classifier)
现在您可以在buil.sbt
文件中使用此命令在另一个项目中将打包资产用作webjar:
libraryDependencies ++= "organization" % "pluginName_scalaVersion" % "version" classifier "assets"
答案 1 :(得分:1)
如果你想在jar中添加一些目录(例如" public"),只需在build.sbt中添加这些行
import NativePackagerHelper._
...
mappings in (Compile, packageBin) ++= directory("public")
答案 2 :(得分:0)
问题标题提及"插件"但我不确定其余的问题是你的意图是将Play网络应用程序部署到生产环境,将Play网络应用程序推送到Maven存储库(如链接中)或将Play插件推送到Maven回购。
假设第一个案例,我自己将Play网络应用程序部署到生产的过程使用bash脚本执行此操作:
运行play dist
(包括公共资产)
可选:重新打包存档
(你可以跳过这个,但我发现我可以减小大约30%)
将存档复制到生产主机,例如与scp
。
nginx
或其他前置HTTP服务器直接为这些资产提供服务。 此related question也可能有用。