如何将Play的"dist"zip文件发布到远程Maven存储库?

dmi*_*.dt 4 sbt playframework

我在将Play的应用程序分发zip文件发布到远程maven存储库时遇到问题.

有很多帖子和博客,但似乎没有什么对我有用.它们要么不完整要么过时.

例如,这里有一个摘录:

val distHack = TaskKey[sbt.File]("dist-hack", "Hack to publish dist")

val myDistSettings = Seq[Setting[_]] (
  publish <<= (publish) dependsOn play.Project.dist,
  publishLocal <<= (publishLocal) dependsOn play.Project.dist,
  artifact in distHack ~= { (art: Artifact) =>
    art.copy(`type` = "zip", extension = "zip")
  },
  distHack <<= (distDirectory, version) map { (d, v) =>
    val packageName = "%s-%s" format(projectName, v)
    val zip = d / (packageName + ".zip")
    zip
  }
) ++ Seq(addArtifact(artifact in distHack, distHack).settings: _*)
Run Code Online (Sandbox Code Playgroud)

play.Project.dist不再是最新版本游戏中对"dist"的有效引用.

另外,如何正确指定"distDirectory"以及从哪里获取"projectName"?

此外,大多数示例都是为了在构建的.scala文件中包含代码.我想简单地在我的build的.sbt文件中指定它.

如果这种方法适用于任何人,请您发一个完整的例子吗?

谢谢!

Tim*_*aer 8

我使用此配置build.sbt将zip文件发布到远程maven仓库.

lazy val dist = com.typesafe.sbt.SbtNativePackager.NativePackagerKeys.dist

publish <<= (publish) dependsOn  dist

publishLocal <<= (publishLocal) dependsOn dist

val distHack = TaskKey[File]("dist-hack", "Hack to publish dist")

artifact in distHack ~= { (art: Artifact) => art.copy(`type` = "zip", extension = "zip") }

val distHackSettings = Seq[Setting[_]] (
  distHack <<= (target in Universal, normalizedName, version) map { (targetDir, id, version) =>
    val packageName = "%s-%s" format(id, version)
    targetDir / (packageName + ".zip")
  }) ++ Seq(addArtifact(artifact in distHack, distHack).settings: _*)

seq(distHackSettings: _*)
Run Code Online (Sandbox Code Playgroud)

如果您只想发布zip文件而不是其他文物,请将其添加到build.sbt:

publishArtifact in (Compile, packageBin) := false

publishArtifact in (Compile, packageDoc) := false

publishArtifact in (Compile, packageSrc) := false
Run Code Online (Sandbox Code Playgroud)

使用sbt publish的拉链发送到远程回购.当你使用sbt-release时,它也像魅力一样.