【问题标题】:Publish asset files of play framework plugin发布播放框架插件的资产文件
【发布时间】:2014-12-06 23:52:28
【问题描述】:

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

【问题讨论】:

标签: playframework sbt playframework-2.3


【解决方案1】:

对于本地发布资产文件,在build.sbt文件中添加这个sn-p

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"

【讨论】:

  • 效果很好。如果尝试发布到像 artifactory 这样的 artifact/ivy 服务器,也可以用“publish”替换“publishLocal”
【解决方案2】:

如果你想将一些目录(例如“public”)添加到 jar 中,只需在 build.sbt 中添加这一行

import NativePackagerHelper._
...
mappings in (Compile, packageBin) ++= directory("public")

来自herehere

【讨论】:

    【解决方案3】:

    问题标题提到了“插件”,但我不确定您是否打算将 Play Web 应用程序部署到生产环境,将 Play Web 应用程序推送到 Maven 存储库(如链接中所示)或将 Play 插件推送到 Maven 存储库。

    假设第一种情况,我自己将 Play 网络应用程序部署到生产环境的过程是使用 bash 脚本完成的:

    1. 运行play dist

      (这包括公共资产)

    2. 可选:重新打包存档

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

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

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

    这个related question 也可能有用。

    【讨论】:

    • play 命令在 play framework 2.3 中不再可用。我需要通过 webjar 自动发布
    猜你喜欢
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多