在以下场景中遇到一些麻烦,其中聚合列表中的一个子模块是SBT插件,但聚合项目是为2.10.x和2.11.x交叉构建的。
除了任何带有+
的命令外,排除逻辑通常运行良好。这看起来像一个SBT错误,因为当用+publish
触发下面的块时,SBT插件中的编译和doc生成对Scala 2.11失败,但它不应该包含在第一位。
不知何故,SBT忽略了这一点,而且我未能找到针对上述问题的不同解决方案。
如何定义排除过滤器或模块排除,条件是Scala版本为2.10.x,以免导致+
命令出现问题?
lazy val sbtPlugin = (project in file("projectx-sbt"))
.settings(sharedSettings: _*)
.settings(
scalaVersion := "2.10.6",
publish := {
CrossVersion.partialVersion(scalaVersion.value).map {
case (2, scalaMajor) if scalaMajor >= 11 => false
case _ => true
}
},
publishMavenStyle := false,
excludeFilter := {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, scalaMajor)) if scalaMajor >= 11 => NothingFilter
case _ => AllPassFilter
}
},
sbtPlugin := true,
..
)