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


155

Я новачок у Play! Framework 2.1 (версія java) і не має досвіду роботи зі шкалою. Я не розумію, що таке і що означає %і що %%означає в 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/SBTЗалежності

Отримання правильної версії 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).
Токсаріс

25

Це частина SBT, яку грає як інструмент побудови. Зокрема, це імпорт імпорту.

Символ відсотків %- це фактично метод, який використовується для побудови залежностей. Знак подвійного відсотка %%вводить поточну версію Scala - це дозволяє отримати правильну бібліотеку для версії Scala, яку ви використовуєте. Це допоможе уникнути необхідності змінювати файл складання під час оновлення Scala.

Більше інформації тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.