播放子项目:如何转换为build.sbt

3天

我有一个工作正常的多模块Play 2.2应用程序,其组织方式如下:

myApp
  + app
  + conf
  + project
      + build.properties
      + Build.scala
      + plugin.sbt

...其中Build.scala包含以下语句:

import sbt._
import Keys._
import play.Project._

object ApplicationBuild extends Build {

  val appName         = "myApp"
  val appVersion      = "1.0-SNAPSHOT"

  val authDependencies = Seq(
    "se.radley" %% "play-plugins-salat" % "1.3.0"
  )

  val mainDependencies = Seq(
    "se.radley" %% "play-plugins-salat" % "1.3.0"
  )

  lazy val auth = play.Project(
    appName + "-auth",
    appVersion,
    authDependencies,
    path = file("modules/auth")).settings(
      lessEntryPoints <<= baseDirectory(customLessEntryPoints),
      routesImport += "se.radley.plugin.salat.Binders._",
      templatesImport += "org.bson.types.ObjectId",
      testOptions in Test := Nil,
      resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt)
    )

  lazy val main = play.Project(
    appName,
    appVersion,
    mainDependencies).settings(
      scalacOptions += "-language:reflectiveCalls",
      routesImport += "se.radley.plugin.salat.Binders._",
      templatesImport += "org.bson.types.ObjectId",
      testOptions in Test := Nil,
      lessEntryPoints <<= baseDirectory(customLessEntryPoints),
      resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt)
    ).dependsOn(auth).aggregate(auth)

  def customLessEntryPoints(base: File): PathFinder = {
    (base / "app" / "assets" / "stylesheets" / "bootstrap" * "bootstrap.less") +++
    (base / "app" / "assets" / "stylesheets" * "*.less")
  }
}

object Resolvers {

  val scalaSbt = Resolver.url("Scala Sbt", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns)
  val sonatype = Resolver.sonatypeRepo("snapshots")
}

现在阅读Play 2.2文档,看来我应该将项目转换为build.sbt:

以下示例使用build.scala文件声明play.Project。这种方法是在2.2版之前定义Play应用程序的方式。保留该方法是为了支持向后兼容。我们建议您转换为基于build.sbt的方法,或者,如果使用build.scala,则使用sbt的项目类型和项目宏。

是否有任何工作示例描述了如何替换project/build.scalabuild.sbt我在这里和那里读了一些简短的文章...但是我无法获得一个有效的Play项目。

詹姆斯·罗珀

无需将您的构建版本转换为build.sbtbuild.sbt较简单,但基本上只是被编译成Build.scala

这个问题的另一个答案是可行的,但可能有点冗长。从SBT文档开始:

http://www.scala-sbt.org/0.13.0/docs/Getting-Started/Multi-Project.html

现在,创建指定您的主项目和子项目,并将主项目设置放入主build.sbt文件中:

lazy val auth = project.in(file("modules/auth"))

lazy val main = project.in(file(".")).dependsOn(auth).aggregate(auth)

playScalaSettings

name := "myApp"

version := "1.0-SNAPSHOT"

libraryDependencies += "se.radley" %% "play-plugins-salat" % "1.3.0"

scalacOptions += "-language:reflectiveCalls"

routesImport += "se.radley.plugin.salat.Binders._"

templatesImport += "org.bson.types.ObjectId"

testOptions in Test := Nil

lessEntryPoints <<= baseDirectory(customLessEntryPoints)

resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt)

object Resolvers {
  val scalaSbt = Resolver.url("Scala Sbt", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns)
  val sonatype = Resolver.sonatypeRepo("snapshots")
}

现在,在中modules/auth/build.sbt,输入auth模块的设置:

name := "myApp-auth"

lessEntryPoints <<= baseDirectory(customLessEntryPoints)

routesImport += "se.radley.plugin.salat.Binders._"

templatesImport += "org.bson.types.ObjectId"

testOptions in Test := Nil

resolvers ++= Seq(Resolvers.sonatype, Resolvers.scalaSbt)

无论如何,它可能需要一些调整,但是希望您能理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

播放子项目:如何转换为build.sbt

来自分类Dev

sbt 子项目:dependsOn

来自分类Dev

如何使SBT子项目具有多个Scala版本?

来自分类Dev

如何在SBT中管理可变的子项目位置?

来自分类Dev

禁用sbt子项目doc生成

来自分类Dev

SBT子项目不起作用?

来自分类Dev

SBT子项目相互依赖

来自分类Dev

在sbt中编译子项目

来自分类Dev

SBT使用集合创建子项目

来自分类Dev

SBT:子项目中的plugins.sbt被忽略?

来自分类Dev

如何在具有多个子项目的SBT项目中覆盖子项目中的设置

来自分类Dev

sbt multi-build中的子项目的配置行在哪里?

来自分类Dev

使用build.sbt中的参数为子项目自定义运行任务?

来自分类Dev

从子项目引用sbt根项目中的设置

来自分类Dev

如何依赖Github的多模块SBT项目的子项目

来自分类Dev

如何让sbt多项目构建为子项目配置设置?

来自分类Dev

如何依赖Github的多模块SBT项目的子项目

来自分类Dev

SBT从子项目运行主要方法

来自分类Dev

SBT子项目测试类路径之谜

来自分类Dev

不要为每个SBT子项目发布docker映像

来自分类Dev

SBT生成的Docker容器无法打包子项目

来自分类Dev

子项目的sbt运行失败,并显示“协议错误”

来自分类Dev

SBT从子项目运行主要方法

来自分类Dev

SBT子项目测试类路径之谜

来自分类常见问题

如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

来自分类Dev

如何在子项目中引用自定义SBT设置

来自分类Dev

如何将Play 2.2 Scala应用程序创建为SBT子项目

来自分类Dev

如何在sbt构建的所有子项目中临时更改scalaVersion?

来自分类Dev

如何在sbt shell中设置子项目的设置(不使用project命令)?

Related 相关文章

热门标签

归档