ここで2つの違いは何ですか?
addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.3" cross CrossVersion.full)
// if your project uses multiple Scala versions, use this for cross building
addCompilerPlugin("org.typelevel" % "kind-projector" % "0.11.3" cross CrossVersion.full)
私の理解では、cross CrossVersion.full
Scalaのフルバージョンをライブラリに追加します。
kind-project_2.13.4:0.11.3
そしてそれ%%
はScalaBinaryバージョンを追加します。
kind-project_2.13:0.11.3
そこで私は、我々が必要とする理由を理解していないcross CrossVersion.full
の両方で%
と%%
。違いは何ですか?
私はそれらが同じであるとかなり確信しています。
公開規則のオーバーライドから:
crossVersion設定は、公開規則をオーバーライドできます。
CrossVersion.disabled
(接尾辞なし)CrossVersion.binary
(_)CrossVersion.full
(_)デフォルトは、
CrossVersion.binary
またはCrossVersion.diabled
crossPathsの値によって異なります。
これらは同等です:
"a" %% "b" % "1.0" ("a" % "b" % "1.0").cross(CrossVersion.binary)
したがって、最終的に重要なのはの値だけですcrossVersion
。
をテストするためにcrossVersion
、私は自分ので簡単なタスクを作成しましたbuild.sbt
:
lazy val getVersion = taskKey[Unit]("A simple task")
getVersion := {
List(dep1, dep2, dep3, dep4).foreach { d =>
val att = Seq(d.organization ,d.name ,d.revision ,d.configurations ,d.isChanging ,d.isTransitive ,d.isForce ,d.explicitArtifacts ,d.inclusions ,d.exclusions ,d.extraAttributes ,d.crossVersion ,d.branchName)
println(att)
}
}
lazy val dep1 = "org.typelevel" % "kind-projector" % "0.11.3" cross CrossVersion.full
lazy val dep2 = "org.typelevel" %% "kind-projector" % "0.11.3" cross CrossVersion.full
lazy val dep3 = "org.typelevel" % "kind-projector" % "0.11.3"
lazy val dep4 = "org.typelevel" %% "kind-projector" % "0.11.3"
の出力sbt getVersion
は次のとおりです。
List(org.typelevel, kind-projector, 0.11.3, None, false, true, false, Vector(), Vector(), Vector(), Map(), Full(, ), None)
List(org.typelevel, kind-projector, 0.11.3, None, false, true, false, Vector(), Vector(), Vector(), Map(), Full(, ), None)
List(org.typelevel, kind-projector, 0.11.3, None, false, true, false, Vector(), Vector(), Vector(), Map(), Disabled(), None)
List(org.typelevel, kind-projector, 0.11.3, None, false, true, false, Vector(), Vector(), Vector(), Map(), Binary(, ), None)
ご覧のとおり、とがのcrossVersion
両方dep1
にあるを除いて、すべてのモジュールは同等dep2
ですFull(, )
。二つの他人とは違ってDisabled()
とBinary(, )
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加