scala - Play 2.0 - Build.scala - 从 pom.xml 转换

标签 scala maven sbt playframework-2.0

我正在尝试从 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"))
    }

最佳答案

看起来 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

关于scala - Play 2.0 - Build.scala - 从 pom.xml 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408326/

相关文章:

scala - 通过特征覆盖方法时如何调用 super 方法

java - 获取资源的大小

用于创建图像的 Scala 库

java - maven-dependency-plugin 忽略 outputDirectory 配置

java - 如何在没有maven依赖的情况下使用Mockito

scala - SBT:动态检测建筑平台

scala - Akka-Persistence - 可以将可变状态与 akka PersistentActor 一起使用吗?

maven - 如何使用 compose 将 docker 卷挂载到我的 docker 项目中?

scala - 从其他子项目触发 SBT 程序集

java - 如何从 SBT Play Framework 2.3 项目中的源中排除目录