SBT:从聚合或基于Scala版本的编译中排除模块

时间:2016-05-30 12:43:02

标签: scala sbt

在以下场景中遇到一些麻烦,其中聚合列表中的一个子模块是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,
  ..
)

0 个答案:

没有答案