Версия Scala и Scala.js включена в идентификатор артефакта - PullRequest
0 голосов
/ 04 ноября 2018

Я только что успешно выпустил свою первую библиотеку Scala & Scala.js для сборки в Sonatype и теперь могу использовать следующие два артефакта в своих приложениях:

Теперь у меня вопрос: почему версия Scala и Scala.js включена в идентификатор артефакта? Я не думаю, что видел такую ​​вещь раньше, поэтому мне было интересно, сделал ли я что-то не так. Вот мой build.sbt: https://github.com/fbaierl/scalajs-cross-compile-tarjan/blob/03954a3e2d1442ad339298a986209c1403c9692e/build.sbt

1 Ответ

0 голосов
/ 04 ноября 2018

Так работают артефакты Scala. Практически все артефакты выглядят так - это неочевидно, когда вы используете эти артефакты в sbt, потому что (IIRC) оператор %% в sbt подразумевает _2.12. (А _sjs0.6 подразумевается оператором %%%.)

Основная причина этого заключается в том, что артефакты, скомпилированные различными основными версиями компилятора Scala (версии Scala - epoch.major.minor), не являются двоично-совместимыми (поскольку в противном случае язык и стандартная библиотека не могли бы развиваться). Вы не можете смешивать, например, Артефакты _2.12 и _2.11 на пути к классам, поэтому «одинаковые» версии одной и той же библиотеки должны публиковаться отдельно для обеих версий Scala, поэтому для их различения необходим суффикс.

...