система онлайн бронирования используя различные версии Скалы во много проекте строит

У меня есть много проект, который использует две версии Скалы. Build.scala похож на это:

import sbt._
import Keys._

object Build extends sbt.Build {
  lazy val root: Project = Project(
    id = "scalacolliderugens",
    base = file("."),
    aggregate = Seq(gen, core)
  )

  lazy val gen  = Project(...)
  lazy val core = Project(...)

  val ugenGenerator = TaskKey[Seq[File]]("ugen-generate", "Generate UGen class files")

  def runUGenGenerator(source: File, cp: Seq[File]): Seq[File] = Nil//TODO
}

Где у меня есть чистый источник, производящий проект, используя Скалу 2.9.2:

  lazy val gen = Project(
    id = "scalacolliderugens-gen",
    base = file("gen"),
    settings = Project.defaultSettings ++ Seq(
      scalaVersion := "2.9.2", //!!!
      libraryDependencies ++= Seq(
        "org.scala-refactoring" % "org.scala-refactoring_2.9.1" % "0.4.1"
      ),
      libraryDependencies <+= scalaVersion { sv =>
        "org.scala-lang" % "scala-compiler" % sv
      }
    )
  )

И фактический проект, который включает произведенные источники, собирающие против Скалы 2.10:

 lazy val core = Project(
    id = "scalacolliderugens-core",
    base = file("core"),
    settings = Project.defaultSettings ++ Seq(
      scalaVersion := "2.10.0", //!!!
      sourceGenerators in Compile <+= (ugenGenerator in Compile),
      ugenGenerator in Compile <<=
        (scalaSource in Compile, dependencyClasspath in Runtime in gen) map {
          (src, cp) => runUGenGenerator(src, cp.files)
        }
      )
    ).dependsOn(gen)

Когда я собираю это, я получаю предупреждения системы онлайн бронирования:

[warn] Binary version (2.9.2) for dependency org.scala-lang#scala-library;2.9.2
[warn]  in de.sciss#scalacolliderugens_2.10;1.0.1 differs from Scala binary \
  version in project (2.10).
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Done updating.
[warn] Binary version (2.9.2) for dependency org.scala-lang#scala-library;2.9.2
[warn]  in de.sciss#scalacolliderugens-gen_2.10;1.0.1 differs from Scala binary \
  version in project (2.10).
[warn] Binary version (2.9.2) for dependency org.scala-lang#scala-compiler;2.9.2
[warn]  in de.sciss#scalacolliderugens-gen_2.10;1.0.1 differs from Scala binary \
  version in project (2.10).

Я должен быть взволнован? Я делаю что-то плохо здесь?

2

3 ответы

Добавьте следующее урегулирование к проекту генерала.

scalaBinaryVersion:= CrossVersion.binaryScalaVersion("2.9.2")
2
добавлено
У вас есть дальнейшие связи, объясняющие, что это/подразумевает? Это предотвратило бы - СНИМОК версии, чтобы нарушить?
добавлено автор 0__, источник

ХОРОШО...

У меня есть многопроектные проекты системы онлайн бронирования, и у них обычно есть параметры настройки системы онлайн бронирования, которые частично разделяются всеми и частично характерные для каждого подпроекта. В моем случае распространенные настройки включают версию Скалы, чтобы использовать.

Вы могли структурировать вас, строят спецификацию тот же самый путь и помещают урегулирование Скалы вариантов в определенные для подпроекта параметры настройки. При необходимости вы могли наслаиваться параметры настройки далее, если есть некоторые параметры настройки, характерные для всех и некоторых характерных для подмножеств подпроектов и другого характерного для каждого отдельного подпроекта.

1
добавлено
Да, я сделал точно, что (см., мой вопрос - scalaVersion находится в параметрах настройки подпроекта). That' s, почему я don' t понимают предупреждения системы онлайн бронирования. Мое чтение состоит в том, что это принимает немного неявные scalaVersion в ThisBuild и волнуется по поводу несоответствия, даже если подпроекты двойным образом не объединены.
добавлено автор 0__, источник

Вы не можете смешать bytecode от различных вспомогательных версий Скалы. Т.е., код, собранный любым 2.9.x серийный компилятор, является не совместимый с испускаемым 2.10.x (или 2.8.x) компилятор.

0
добавлено
Я знаю... Мой проект - Скала 2.10, кроме для генератора исходного кода подпроект, который управляет (как система онлайн бронирования, между прочим) использованием Скалы 2.9.2. Тот генератор испускает юридический исходный код, compilable и в Скале 2.9 и 2.10.
добавлено автор 0__, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Scala User Group
Scala User Group
1 486 участник(ов)

[RU] Scala Chat. Rules, additional links, FAQ: https://telegra.ph/Russian-Speaking-Scala-User-Group-08-27

Scala Jobs
Scala Jobs
852 участник(ов)

Rules: http://telegra.ph/My-lyudi-i-ehto-znachit-chto-nam-nuzhna-organizaciya-02-07 Main Scala Channel: https://t.me/scala_jobs_feed Flood Room: https://t.me/scala_ponv