发布播放框架插件的资产文件

Posted

技术标签:

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

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

【问题讨论】:

How to publish webjar assets with publish/publishLocal in Play 2.3?的可能重复 链接问题不包括我的问题。我需要在另一个项目中使用像 webjar 这样的资产文件,但我无法导入资产 jar 文件来构建 .sbt 文件,因为它们位于已发布位置的 assets 文件夹中 【参考方案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")

来自here 和here。

【讨论】:

【参考方案3】:

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

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

    运行play dist

    (这包括公共资产)

    可选:重新打包存档

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

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

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

这个related question 也可能有用。

【讨论】:

play 命令在 play framework 2.3 中不再可用。我需要通过 webjar 自动发布

以上是关于发布播放框架插件的资产文件的主要内容,如果未能解决你的问题,请参考以下文章

简洁直观强悍的前端开发框架Bootstrap

如何在flutter插件中导入外部iOS框架?

网页无插件视频流媒体播放器EasyPlayer-RTSP在WPF框架播放不显示视频画面,该如何排查处理?

flask插件 不了视频。打开视频,视频播放框没反应请高手赐教

Android 插件化“ 插桩式 “ 插件化框架 ( 原理与实现思路 )

插件和框架的区别是啥?