发布play framework插件的资产文件

时间:2014-10-12 06:49:31

标签: playframework sbt playframework-2.3

publishTo文件中使用build.sbt,它可以是automation the publishing progress。 但是资产文件(在public文件夹中)没有打包。如何打包和发布资产文件?

3 个答案:

答案 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")

来自herehere

答案 2 :(得分:0)

问题标题提及"插件"但我不确定其余的问题是你的意图是将Play网络应用程序部署到生产环境,将Play网络应用程序推送到Maven存储库(如链接中)或将Play插件推送到Maven回购。

假设第一个案例,我自己将Play网络应用程序部署到生产的过程使用bash脚本执行此操作:

  1. 运行play dist

    (包括公共资产)

  2. 可选:重新打包存档

    (你可以跳过这个,但我发现我可以减小大约30%)

  3. 将存档复制到生产主机,例如与scp

  4. 将存档解压缩到将要运行的位置
  5. 从存档中解压缩公共资产,并确保nginx或其他前置HTTP服务器直接为这些资产提供服务。
  6. related question也可能有用。