发布播放框架插件的资产文件
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 自动发布以上是关于发布播放框架插件的资产文件的主要内容,如果未能解决你的问题,请参考以下文章
网页无插件视频流媒体播放器EasyPlayer-RTSP在WPF框架播放不显示视频画面,该如何排查处理?
flask插件 不了视频。打开视频,视频播放框没反应请高手赐教