Playframework 发布play framework插件的资产文件

Playframework 发布play framework插件的资产文件,playframework,sbt,playframework-2.3,Playframework,Sbt,Playframework 2.3,在build.sbt文件中使用publishTo,它可以被删除。 但资产文件(在公用文件夹中)未打包。如何打包和发布资产文件?问题标题提到了“插件”,但从问题的其余部分来看,我不确定您的意图是将Play web应用程序部署到生产环境,将Play web应用程序推送到Maven存储库(如链接中所示),还是将Play插件推送到Maven repo 假设是第一种情况,我自己将Play web应用部署到生产环境的过程会使用bash脚本执行此操作: 运行playdist (包括公共资产) 可选:重新打包存

build.sbt
文件中使用
publishTo
,它可以被删除。
但资产文件(在<代码>公用文件夹中)未打包。如何打包和发布资产文件?

问题标题提到了“插件”,但从问题的其余部分来看,我不确定您的意图是将Play web应用程序部署到生产环境,将Play web应用程序推送到Maven存储库(如链接中所示),还是将Play插件推送到Maven repo

假设是第一种情况,我自己将Play web应用部署到生产环境的过程会使用bash脚本执行此操作:

  • 运行
    playdist

    (包括公共资产)

  • 可选:重新打包存档

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

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

  • 将存档解压缩到要运行的位置
  • 从归档文件中解包公共资产,并确保nginx或其他面向前端的HTTP服务器直接为这些资产提供服务
    这可能也很有用。

    对于本地发布的资产文件,请在
    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
    指定包类型文件夹(WebJAR作为java依赖项添加到jars文件夹中)

    第二个
    jar
    指定打包文件的扩展名

    资产
    是分类器()

    现在,您可以使用
    buil.sbt
    文件中的以下命令在另一个项目中将打包的资产用作webjar:

    libraryDependencies ++=   "organization" % "pluginName_scalaVersion" % "version" classifier "assets"
    

    如果您想在jar中添加一些目录(例如“public”),只需在build.sbt中添加这几行即可

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

    来自和。

    链接问题的可能重复项不包括我的问题。我需要在另一个项目中使用类似webjar的资产文件,但我无法导入资产jar文件来构建.sbt文件,因为它们位于发布的locationplay命令中的
    assets
    文件夹中,play framework 2.3不再提供该命令。我需要通过一个非常有效的webjar自动发布。如果试图发布到像artifactory这样的工件/常春藤服务器,用“发布”替换“publishLocal”也可以