【问题标题】:Play 2.0 - Build.scala - converting from pom.xmlPlay 2.0 - Build.scala - 从 pom.xml 转换
【发布时间】:2012-05-11 14:34:30
【问题描述】:

我正在尝试从 Nexus maven 存储库迁移到使用 https://github.com/jcaddel/maven-s3-wagon。上马车?我已经阅读了一些关于 SBT 构建脚本的内容,但这似乎不是我想要的……我错过了什么吗?文档很少。

这是我的游戏! 2.0 Build.scala 文件:

import sbt._
import Keys._
import PlayProject._

object ApplicationBuild extends Build {

  val appName = "my-play-app"
  val appVersion = "1.0-SNAPSHOT"

  val appDependencies = Seq(
    "org.fusesource.mqtt-client" % "mqtt-client" % "1.0")

  val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
    resolvers ++= Seq(
      "Maven Repository" at "http://repo1.maven.org/maven2/",
      "fusesource.snapshots" at "http://repo.fusesource.com/nexus/content/repositories/snapshots",
      "fusesource.releases" at "http://repo.fusesource.com/nexus/content/groups/public"))
}

这是我需要从 pom.xml 文件转换为 Build.scala 的内容(通过 wagon wiki):

<build>
 <extensions>
  <extension>
    <groupId>org.kuali.maven.wagons</groupId>
    <artifactId>maven-s3-wagon</artifactId>
    <version>[S3 Wagon Version]</version>
  </extension>
 </extensions>
</build>

还有

<distributionManagement>
 <site>
  <id>s3.site</id>
  <url>s3://[AWS Bucket Name]/site</url>
 </site>
 <repository>
  <id>s3.release</id>
  <url>s3://[AWS Bucket Name]/release</url>
 </repository>
 <snapshotRepository>
  <id>s3.snapshot</id>
  <url>s3://[AWS Bucket Name]/snapshot</url>
 </snapshotRepository>
</distributionManagement>

我想我了解如何将分发部分添加到 Build.scala:

    import sbt._
    import Keys._
    import PlayProject._

    object ApplicationBuild extends Build {

      val appName = "my-play-app"
      val appVersion = "1.0-SNAPSHOT"

      val appDependencies = Seq(
        "org.fusesource.mqtt-client" % "mqtt-client" % "1.0")

      val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
        resolvers ++= Seq(
          "Maven Repository" at "http://repo1.maven.org/maven2/",
          "fusesource.snapshots" at "http://repo.fusesource.com/nexus/content/repositories/snapshots",
          "fusesource.releases" at "http://repo.fusesource.com/nexus/content/groups/public",
          "s3.site" at "s3://[AWS Bucket Name]/site",
          "s3.release" at "s3://[AWS Bucket Name]/release",
          "s3.snapshot" at "s3://[AWS Bucket Name]/snapshot"))
    }

【问题讨论】:

    标签: scala maven sbt playframework-2.0


    【解决方案1】:

    看起来 sbt 中仍然没有自动 S3 发布支持(尽管有 s3-plugin)。但我认为您可以轻松创建自己的,因为

    1. sbt 可以通过插件增强
    2. Maven 插件只是 POJO(因此您可以轻松地在 maven 之外重用它们)
    3. existing Maven plugin 已经可以满足您的需求了

    我觉得可以

    1. 使用sbt release plugin...
    2. ...添加您自己的自定义发布步骤...
    3. ...调用S3Wagon.putResourceS3Plugin.S3.s3Settings.upload

    【讨论】:

      【解决方案2】:

      sbt-aether-deploymaven-s3-wagonfmt-sbt-s3-resolver 的组合很适合我

      build.sbt:

      publishMavenStyle := true
      
      publishTo <<= version { v: String =>
      
        if (v.trim.endsWith("SNAPSHOT"))
          Some("Snapshots" at "s3://myrepo/snapshots")
        else
          Some("Releases" at "s3://myrepo/releases")
      }
      
      aetherSettings
      
      aetherPublishSettings
      
      wagons := Seq(aether.WagonWrapper("s3", "org.kuali.maven.wagon.S3Wagon"))
      

      plugins.sbt:

      addSbtPlugin("no.arktekk.sbt" % "aether-deploy" % "0.13")
      
      addSbtPlugin("com.frugalmechanic" % "fm-sbt-s3-resolver" % "0.4.0")
      
      libraryDependencies += "org.kuali.maven.wagons" % "maven-s3-wagon" % "1.2.1"
      

      fm-sbt-s3-resolver 用于解决 s3 依赖项和用于部署的以太。单独使用 fm-sbt-s3-resolver 部署不会 AFAIK 生成和发布元数据 (maven-metadata.xml)

      【讨论】:

      • 这很有帮助!!但是如何添加凭据?通常我会在 settings.xml 中执行此操作,但这需要 repo 与 settings.xml 中的 id 匹配
      • 很高兴! maven-s3-wagon 进行身份验证 (github.com/jcaddel/maven-s3-wagon/wiki/Authentication)。我不确定如何匹配 id。我以为在我的项目中确实如此,但事实证明它正在使用环境变量。
      【解决方案3】:

      Sbt 不支持 maven 扩展,这为您提供了 s3:// 协议,所以简而言之,没有简单的方法可以做您想做的事情

      【讨论】:

        【解决方案4】:

        有一个S3 Plugin for sbt 可用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-10
          • 1970-01-01
          • 1970-01-01
          • 2013-03-11
          • 2013-01-04
          • 1970-01-01
          • 2020-06-06
          • 2013-05-13
          相关资源
          最近更新 更多