如何在 Play 2.3 中使用 publish/publishLocal 发布 webjar 资产?
Posted
技术标签:
【中文标题】如何在 Play 2.3 中使用 publish/publishLocal 发布 webjar 资产?【英文标题】:How to publish webjar assets with publish/publishLocal in Play 2.3? 【发布时间】:2014-11-23 05:31:55 【问题描述】:Since Play Framework 2.3 assets are packaged into one jar archive file. 我想在项目中自动发布这个 jar,即在 publish
或 publishLocal
上我希望也发布资产 jar。
如何实现?
【问题讨论】:
“既然 playframework 2.3 资源被打包到一个 webjar 归档文件中。” 是什么意思?您能否分享一个指向描述该功能的文档的链接?我似乎无法重现它。 playframework.com/documentation/2.3.x/Assets,部分:“公共资产如何打包?” 您能否确认资产 webjar 仅在您dist
而不是 publishLocal
时创建?我设法仅在 dist
中创建了资产 jar。
是的,命令package
或玩! start
也创建 webjar 文件,但 publishLocal
或(我想也是)publish
不要创建它。
【参考方案1】:
在inspect tree dist
之后,我设法找到了生成资产文件的任务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
生成的资产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)
对您希望表现出类似行为的其他任务重复此操作。
但我很怀疑这是最好的解决方案。
【讨论】:
使用 build.sbt 文件中的这些更改,在 ivy 中的assets
文件夹中的 jar 文件中发布资产文件。但是要在另一个 sbt 项目中添加 jar 依赖项,jar 文件应该在 jars
文件夹中。
不!在 sbt 文件中使用分类器导致在 jars
文件夹而不是 assets 文件夹中搜索 libraryName-assets 意味着:C:\Users\M.Kashi\.ivy2\local\com.rh\??_2.11\1.0-SNAPSHOT\jars\??_2.11-assets.jar
已解决。看到这个:***.com/questions/26322655/…以上是关于如何在 Play 2.3 中使用 publish/publishLocal 发布 webjar 资产?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Play Framework 2.3 中向 FakeRequest 添加查询字符串参数?
如何在 Play 2.2.3 项目中使用 Spark 1.2.0,因为它因 NoSuchMethodError:akka.util.Helpers 而失败?
在 Play framework 2.3 中设置 cookie sameSite
为啥在 Play 2.3 项目中 sbt 编译后 sbt 失败并显示 NoClassDefFoundError: play/Play$ in Play 2.2.x 项目?