Значения символов 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"

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

Ответ 1

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

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

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

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

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