Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala SBT多项目构建:针对不同子项目的2个不同版本的SBT play插件_Scala_Playframework_Ant_Sbt_Ivy - Fatal编程技术网

Scala SBT多项目构建:针对不同子项目的2个不同版本的SBT play插件

Scala SBT多项目构建:针对不同子项目的2个不同版本的SBT play插件,scala,playframework,ant,sbt,ivy,Scala,Playframework,Ant,Sbt,Ivy,我有一个sbt项目,包含两个play子项目,其中包含两个不同版本的play(基本上还有两个不同版本的Scala:2.12和2.10)。有没有办法使用两个版本的play插件? 这是我的插件。sbt: resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/" resolvers += "scalaz-bintray" at &qu

我有一个
sbt
项目,包含两个play子项目,其中包含两个不同版本的play(基本上还有两个不同版本的Scala:2.12和2.10)。有没有办法使用两个版本的play插件? 这是我的
插件。sbt

resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"

resolvers += "Akka Snapshot Repository" at "https://repo.akka.io/snapshots/"
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.7") 
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.7") 
lazy val global = Project("root",file("."))

lazy val play28 = Project( "play_2.8_subproject" , file("subs/ply28/")).settings(
  libraryDependencies ++= Seq( jdbc , ehcache , ws , specs2 % Test , guice ),
  scalaVersion := "2.12.2"
).enablePlugins(PlayScala)

lazy val play23 = Project( "play_2.3_subproject" , file("subs/pl23/")).settings(
  scalaVersion := "2.10.5",
  libraryDependencies ++= Seq( jdbc  , ws  )  
).enablePlugins(PlayScala)
这是
build.sbt

resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"

resolvers += "Akka Snapshot Repository" at "https://repo.akka.io/snapshots/"
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.7") 
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.7") 
lazy val global = Project("root",file("."))

lazy val play28 = Project( "play_2.8_subproject" , file("subs/ply28/")).settings(
  libraryDependencies ++= Seq( jdbc , ehcache , ws , specs2 % Test , guice ),
  scalaVersion := "2.12.2"
).enablePlugins(PlayScala)

lazy val play23 = Project( "play_2.3_subproject" , file("subs/pl23/")).settings(
  scalaVersion := "2.10.5",
  libraryDependencies ++= Seq( jdbc  , ws  )  
).enablePlugins(PlayScala)
我可以运行play 2.8子项目。尽管如此,在尝试运行Play2.3项目时,PlayPlugin2.8仍然没有通过Scala2.10解决

(play_2.3_subject/*:update)sbt.ResolveException:未解析的依赖项: com.typesafe.play#play-server_2.10;2.8.7:未找到

你明白了,我想在两个play项目之间切换,并为每个子项目启用适当的插件版本

首先,这可能吗?如果是,我如何实现期望的行为?
注:我使用sbt 0.13。

从评论中总结讨论,这可能是不可能的。例如,困难之一是在
build.sbt
中启用
PlayScala
。如或中所述,在这两个版本中,您都可以启用插件:

lazy val root = (project in file(".")).enablePlugins(PlayScala)
当两个版本中的
play.sbt.PlayScala
都定义了
PlayScala

话虽如此,即使有可能建立这样一个结构,也很难维持,因为第2.3和第2.8重头戏之间存在着突破性的变化,如以下所述:

升级Play版本的最佳方法是一次性完成。同时将Scala、Play和sbt升级到最新版本。这可能会花费更少的时间,然后弄清楚如何在同一个项目中有两个播放版本


对于未来的维护,最好是在新版本发布后升级。这样你就不需要做太多的改变来保持它。此外,您还可以获得最新的更新,这些更新通常包括安全漏洞修复、性能改进和错误修复,以及新功能。

从评论中总结讨论,这可能是不可能的。例如,困难之一是在
build.sbt
中启用
PlayScala
。如或中所述,在这两个版本中,您都可以启用插件:

lazy val root = (project in file(".")).enablePlugins(PlayScala)
当两个版本中的
play.sbt.PlayScala
都定义了
PlayScala

话虽如此,即使有可能建立这样一个结构,也很难维持,因为第2.3和第2.8重头戏之间存在着突破性的变化,如以下所述:

升级Play版本的最佳方法是一次性完成。同时将Scala、Play和sbt升级到最新版本。这可能会花费更少的时间,然后弄清楚如何在同一个项目中有两个播放版本


对于未来的维护,最好是在新版本发布后升级。这样你就不需要做太多的改变来保持它。此外,您还可以获得最新的更新,这些更新通常包括安全漏洞修复、性能改进和错误修复,以及新功能。

我认为问这些问题是停止使用Scala 2.10并升级到最新sbt的一个好迹象。@Tomer Shetah,我想继续使用2.10版和2.12版,这取决于子项目没有确凿的证据,但我非常确定这是不可能的。即使是这样,这些版本之间也存在着突破性的变化。您计划如何编写对两者都有好处的代码?请参见此处示例:。你想达到什么目标?为什么要同时使用这两个版本?@Tomer Shetah,我已经有了play 2.3子项目,我想添加一个新的play 2.8子项目,而不涉及旧的play子项目。乍一看,我认为不会有问题,因为每个子项目都有自己的设置;在我被插件卡住之前,我不能在plugins.sbt中有两个不同版本的play插件。如果我尝试运行旧的play项目(2.3),sbt会尝试使用scala 2.10检索play 2.8插件,这会导致未解决的依赖项异常。但是如果你使用的是git,它会保存你的历史记录,因此你不需要两者都有,你可以安全地升级到最新版本并只使用它们。我认为问这样的问题是停止使用Scala 2.10并升级到最新sbt的一个很好的标志。@Tomer Shetah,我想继续使用2.10版和2.12版,这取决于子项目没有确凿的证据,但我非常确定这是不可能的。即使是这样,这些版本之间也存在着突破性的变化。您计划如何编写对两者都有好处的代码?请参见此处示例:。你想达到什么目标?为什么要同时使用这两个版本?@Tomer Shetah,我已经有了play 2.3子项目,我想添加一个新的play 2.8子项目,而不涉及旧的play子项目。乍一看,我认为不会有问题,因为每个子项目都有自己的设置;在我被插件卡住之前,我不能在plugins.sbt中有两个不同版本的play插件。如果我尝试运行旧的play项目(2.3),sbt会尝试使用scala 2.10检索play 2.8插件,这会导致未解决的依赖项异常。但是,如果您使用的是git,它会保存您的历史记录,因此您不需要同时拥有这两个,您可以安全地升级到最新版本,并只使用它们。