Build.scala、%および%%記号の意味


155

Playは初めてです。フレームワーク2.1(Javaバージョン)で、Scalaの使用経験はありません。Build.scala %%%は何か、何が何を意味するのか理解できません。私はそれらについてググったが、それらの意味を見つけることができなかった。

私のBuild.scalaファイルには、次のものが含まれています。

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

最初の行で1つの%記号を使用し、2番目の行で2パーセント記号を使用するのはなぜ%%ですか?それらは何のため?

回答:


184

公式ドキュメントから:

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

正しいScalaバージョンを入手する %%

groupID %% artifactID % revision代わりに使用した場合groupID % artifactID % revision(違いはの%%後の 2倍です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
ゴードングスタフソン2016年

4
追加の質問には、別のSO質問を提出する必要があると思わないでください。%%を使用したくないのはいつですか?私にはそれは「より良い」ように見え、常に使用する必要があります...
PeterPerháč16年

10
@PeterPerháčScala %%バージョンを含まないアーティファクト(純粋なJavaライブラリなど)では使用できません。
Toxaris 2016年

25

これは、playがビルドツールとして使用するSBTの一部です。具体的には、これはインポートステートメントです。

パーセント記号%は、実際には依存関係を構築するために使用される方法です。二重パーセント記号%%は、現在のScalaバージョンを挿入します。これにより、実行中のScalaのバージョンに適したライブラリーを取得できます。これは、Scalaを更新するときにビルドファイルを変更する必要がないようにするためです。

詳細はこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.