【问题标题】:How to publish Play's "dist" zip file to remote Maven repository?如何将 Play 的“dist”zip 文件发布到远程 Maven 存储库?
【发布时间】:2014-10-19 15:38:01
【问题描述】:

我在将 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: _*)

play.Project.dist 在最新版本的 play 中不再是对“dist”的有效引用。

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

此外,大多数示例都旨在将代码包含在构建的 .scala 文件中。我正在尝试简单并在我的构建的 .sbt 文件中指定它。

如果这种方法适用于任何人,您能否发布一个完整的示例?

谢谢!

【问题讨论】:

    标签: playframework sbt


    【解决方案1】:

    我在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: _*)
    

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

    publishArtifact in (Compile, packageBin) := false
    
    publishArtifact in (Compile, packageDoc) := false
    
    publishArtifact in (Compile, packageSrc) := false
    

    使用sbt publish 将压缩包发送到远程仓库。当您使用sbt-release 时,它也能发挥作用。

    【讨论】:

    • 谢谢!从 play 2.3.8 开始,这仍然有效(使用 sbt-release)
    • 你知道 sbt 1.0 的解决方案吗?
    【解决方案2】:

    我会添加更多详细信息来回答,因为上面的答案缺少发布行。

        lazy val dist = com.typesafe.sbt.SbtNativePackager.NativePackagerKeys.dist
    
        val publishDist = TaskKey[sbt.File]("publish-dist", "publish the dist artifact")
    
        publishArtifact in (Compile, packageDoc) := false
    
        publishArtifact in (Compile, packageSrc) := false
    
        publishArtifact in (Compile, packageBin) := false
    
        publishArtifact in Test := false
    
        publish <<= (publish) dependsOn dist
    
        publishLocal <<= (publishLocal) dependsOn dist
    
        artifact in publishDist ~= {
          (art: Artifact) => art.copy(`type` = "zip", extension = "zip")
        }
    
        // disable using the Scala version in output paths and artifacts
        crossPaths := false
    
        // publish to Artifactory
        organization := "your.org.name.modulename"
    
        publishMavenStyle := true
    
        pomIncludeRepository := {
          x => false
        }
    
        val distHackSettings = Seq[Setting[_]](
        publishDist <<= (target in Universal, normalizedName, version) map { (targetDir, id, version) =>
          val packageName = "%s-%s" format(id, version)
          targetDir / (packageName + ".zip")
        },
        publishTo := {      
         val repo = "http://my.artifactory:8081/artifactory/"
        if (isSnapshot.value)
            Some("snapshots" at repo + "libs-snapshot-local;build.timestamp=" + new java.util.Date().getTime)
        else
            Some("releases"  at repo + "libs-release-local;build.timestamp=" + new java.util.Date().getTime)
        }
      ) ++ Seq(addArtifact(artifact in publishDist, publishDist).settings: _*)
    
    seq(distHackSettings: _*)
    //if required provide credentials file location
    credentials += Credentials(Path.userHome / ".ivy2" / "credentials")
    

    【讨论】:

    • 你知道 sbt 1.0 的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2013-06-30
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多