我很确定它们是一样的。
来自Overriding the publishing convention:
crossVersion 设置可以覆盖发布约定:
-
CrossVersion.disabled(无后缀)
-
CrossVersion.binary (_)
-
CrossVersion.full (_)
默认为CrossVersion.binary 或CrossVersion.diabled,具体取决于crossPaths 的值。
来自More about using cross-built libraries:
这些是等价的:
"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(, )。