sbt - 如何在Play 2.3中使用publish/publishLocal发布webjar资源?

标签 sbt playframework-2.3

Since Play Framework 2.3 assets are packaged into one jar archive file.我想随项目自动发布此 jar,即在 publishpublishLocal 时,我也希望发布 Assets jar。

如何实现这一目标?

最佳答案

inspect tree dist之后,我设法找到了生成 Assets 文件的任务playPackageAssets:

[play-publish-webjar] $ inspect playPackageAssets
[info] Task: java.io.File
[info] Description:
[info]
[info] Provided by:
[info]  {file:/Users/jacek/sandbox/play-publish-webjar/}root/*:playPackageAssets
[info] Defined at:
[info]  (sbt.Defaults) Defaults.scala:641
[info] Dependencies:
[info]  *:playPackageAssets::packageConfiguration
[info]  *:playPackageAssets::streams
[info] Reverse dependencies:
[info]  *:scriptClasspath
[info]  universal:mappings
[info] Delegates:
[info]  *:playPackageAssets
[info]  {.}/*:playPackageAssets
[info]  */*:playPackageAssets

一个简单的解决方案可能是将 playPackageAssets 生成的 Assets webjar 附加到 publishLocal 任务的工件。将以下内容添加到 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, "asset", "jar", "assets") -> assets)
}

对您想要展示类似行为的其他任务重复此操作。

但是我很怀疑这是最好的解决方案。

关于sbt - 如何在Play 2.3中使用publish/publishLocal发布webjar资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089472/

相关文章:

scala - 使用 scalikejdbc 在 ON 中使用 AND 子句左 JOIN

android - 如何使用 Android 模块创建 sbt 项目并使用 Intellij Ultimate 运行?

java - 如何签署我的 ProGuard'ed Scala 独立 JAR?

scala - 部署没有依赖项的 Scala 二进制文件

eclipse - Scala、Maven、Sbt 和 Eclipse

scala - 如何将查询参数添加到 Play 重定向?

scala - Play 框架 - 在 View 中获取 session 数据

scala - sbt 0.12.4 - 有 x 个功能警告;使用 -feature 重新运行以获取详细信息

Javascript:两个 if typeof undefined 语句给出不同的结果

java - 为 Playframework 2.3x 生成基于 UUID 的 @ID