Значения символов Build.scala,% и %%

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

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

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

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

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

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

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

Если вы используете groupID %% artifactID % revision а не groupID % artifactID % revision (разница равна double %% после 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" ) 

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

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

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

Дополнительная информация здесь

  • как сделать saveAsTextFile НЕ разделить вывод на несколько файлов?
  • Валидация против дизъюнкции
  • Как я повторяю RDD в искры apache (scala)
  • Действительные символы идентификатора в Scala
  • Разница между сокращением и foldLeft / fold в функциональном программировании (в частности, Scala и Scala API)?
  • Как перенести RDD в Spark
  • Как ссылаться на внешний проект sbt из другого sbt-проекта?
  • В чем разница между == и .equals в Scala?
  • «Ошибка: тип несоответствия» в Spark с теми же найденными и требуемыми типами данных
  • Использовать случай scala.concurrent.blocking
  • Разница между складками и foldLeft или foldRight?
  • Давайте будем гением компьютера.