Znaczenie symboli Build.scala,% i %%


155

Jestem nowy w grze! Framework 2.1 (wersja java) i nie mam doświadczenia ze scala. Nie rozumiem, co to jest, co oznacza %i %%oznacza w Build.scala. Poszukałem ich w Google, ale nie mogłem znaleźć ich znaczenia.

W moim pliku Build.scala mam:

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

Dlaczego w pierwszym wierszu używany jest pojedynczy symbol%, a w drugim dwa symbole procentu %%? Do czego służą?

Odpowiedzi:


184

Z oficjalnej dokumentacji:

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

Uzyskanie odpowiedniej wersji Scala z %%

Jeśli użyjesz groupID %% artifactID % revisionzamiast groupID % artifactID % revision(różnica jest podwójna %%po groupID), SBT doda wersję Scala twojego projektu do nazwy artefaktu. To tylko skrót.

Możesz to napisać bez %%:

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

Zakładając, że scalaVersiondla Twojej kompilacji jest to 2.9.1, co następuje:

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

Jak widać powyżej, jeśli używasz %%, nie musisz określać wersji.


2
„Wersja Scala Twojego projektu” oznacza wartość klucza SettingKey scalaVersion.
Gordon Gustafson,

4
nie sądzę, że zadawanie osobnego pytania SO jest wymagane w przypadku mojego dodatkowego pytania: kiedy nie chciałbym używać %%? Dla mnie wygląda na to, że jest „lepszy” i powinien być używany zawsze ....
Peter Perháč

10
@ PeterPerháč nie można używać %%z artefaktami, które nie zawierają wersji Scala (np. Czyste biblioteki Java).
Toxaris

25

Jest to część SBT, której gra używa jako narzędzia do budowania. W szczególności jest to instrukcja importu.

Symbol procentu %jest w rzeczywistości metodą używaną do budowania zależności. Podwójny znak procentu %%powoduje wstrzyknięcie aktualnej wersji Scali - pozwala to na pobranie odpowiedniej biblioteki dla używanej wersji scali. Ma to na celu uniknięcie konieczności zmiany pliku kompilacji podczas aktualizacji Scali.

Więcej informacji tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.