gpt4 book ai didi

scala - 如何为每个 scala 版本制作不同的子类?

转载 作者:行者123 更新时间:2023-12-04 14:53:47 24 4
gpt4 key购买 nike

这是我的项目结构。我想在运行时加载基于 scala 版本的不同子类。

root
-- scala-parent (ParentClass)
-- scala-2.10 (SubClassScala210)
-- scala-2.11 (SubClassScala211)
-- scala-2.12 (SubClassScala212)

基类在 scala-parent 中,而其他模块有不同的子类。我可以针对不同版本的 scala 库构建子类模块(scala-2.10/scala-2.11/scala-2.12)。问题是我只能再次构建 scala-parent 一个特定版本的 scala。

我想知道此类问题的最佳实践是什么,如何为每个 scala 版本构建子类?

请为 Maven 提供解决方案,而不是为 sbt 提供解决方案。

最佳答案

sbt-cross-build-dependson-example显示如何 cross-buildmultiple sub-projects 组成的项目子项目在哪里
不同的 Scala 版本取决于父项目。

给定 scala-parent项目和 scala-2.11scala-2.12 dependsOn 的子项目scala-parent , 然后
设置 crossScalaVersions scala-parent , 同时设置 scalaVersion 在这样的子项目上

lazy val scalaParent = (project in file("scala-parent")).settings(crossScalaVersions := Seq("2.11.0", "2.12.0"))
lazy val scala211 = (project in file("scala-2.11")).dependsOn(scalaParent).settings(scalaVersion := "2.11.0")
lazy val scala212 = (project in file("scala-2.12")).dependsOn(scalaParent).settings(scalaVersion := "2.12.0")

还设置 crossScalaVersions := Seq() root项目 aggregates其他项目:
lazy val root = (project in file("."))
.aggregate(scalaParent, scala211, scala212)
.settings(
name := "sbt-cross-build-dependson-example",
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % Test,
crossScalaVersions := Seq() // https://github.com/sbt/sbt/issues/4262#issuecomment-405607763
)

现在执行 sbt +compile (注意 + )应该交叉构建项目:
sbt:sbt-cross-build-dependson-example> +compile
[info] Setting Scala version to 2.12.0 on 2 projects.
...
[info] Updating scala212...
[info] Compiling 1 Scala source to /Users/mario/IdeaProjects/sbt-cross-build-dependson-example/scala-parent/target/scala-2.12/classes ...
[info] Compiling 1 Scala source to /Users/mario/IdeaProjects/sbt-cross-build-dependson-example/scala-2.12/target/scala-2.12/classes ...
...
[info] Setting Scala version to 2.11.0 on 2 projects.
...
[info] Updating scala211...
[info] Compiling 1 Scala source to /Users/mario/IdeaProjects/sbt-cross-build-dependson-example/scala-parent/target/scala-2.11/classes ...
[info] Compiling 1 Scala source to /Users/mario/IdeaProjects/sbt-cross-build-dependson-example/scala-2.11/target/scala-2.11/classes ...

注意 scala-parent已针对 2.11 和 2.12 进行了交叉编译
> tree -d -L 1 scala-parent/target/
scala-parent/target/
├── scala-2.11
├── scala-2.12

而子项目只是为它们各自的版本构建的
> tree -d -L 1 scala-2.11/target/
scala-2.11/target/
├── scala-2.11

tree -d -L 1 scala-2.12/target/
scala-2.12/target/
├── scala-2.12

关于scala - 如何为每个 scala 版本制作不同的子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55887656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com