Build.scala, символы% и %%, означающие


155

Я новичок в игре! Framework 2.1 (Java-версия) и не имеют опыта работы с Scala. Я не понимаю, что есть, что значит %и что %%значит в Build.scala. Я гуглил о них, но не смог найти их значения.

В моем файле Build.scala у меня есть:

"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final",
"com.typesafe" %% "play-plugins-mailer" % "2.1"

Почему в первой строке используется один символ%, а во второй - два процента %%? Для чего они?

Ответы:


184

Из официальной документации:

http://www.playframework.com/documentation/2.1.1/SBTDependencies

Получение правильной версии Scala с %%

Если вы используете groupID %% artifactID % revisionвместо groupID % artifactID % revision(разница вдвое %%больше groupID), SBT добавит версию Scala вашего проекта к имени артефакта. Это просто ярлык.

Вы можете написать это без %%:

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)

Предполагая, что scalaVersionдля вашей сборки 2.9.1, следующее идентично:

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)

Как вы можете видеть выше, если вы используете %%, вам не нужно указывать версию.


2
«Версия Scala вашего проекта» означает значение SettingKey scalaVersion.
Гордон Густафсон

4
не думаю, что для моего дополнительного вопроса требуется поднять отдельный вопрос SO: когда бы я не захотел использовать %%? Мне кажется, что это «лучше» и должно использоваться всегда…
Петер Перхач

10
@ PeterPerháč, вы не можете использовать %%с артефактами, которые не содержат версию Scala (например, чистые библиотеки Java).
Toxaris

25

Это часть SBT, которую игра использует как инструмент для сборки. В частности, это оператор импорта.

Символ процента %фактически является методом, используемым для построения зависимостей. Знак двойного процента %%вводит текущую версию Scala - это позволяет вам получить правильную библиотеку для той версии Scala, которую вы используете. Это сделано для того, чтобы не менять файл сборки при обновлении Scala.

Больше информации здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.