在 SBT 中执行 Javadoc 版本

Enforce Javadoc version in SBT

我刚开始从事一个使用 SBT 进行构建的大型项目。我有一台安装了 Java 8 的新计算机,但团队的其他成员仍在使用 Java 7。就代码而言,这不是问题,因为我们都已准备好生成 v7 字节-代码。

尝试使用 publishLocal 操作发布项目时出现问题。请记住,尽管我是 SBT 的新手,有些事情我 say/assume 可能不准确。

我们使用 sbt 0.13。当我 运行 命令 sbt publishLocal 时,它 运行s doc 动作,它又 运行s javadoc 生成文档。由于我安装了 java 1.8,它使用相应版本的 javadoc,老实说这是一个真正的痛苦,抱怨每一个丢失的 @return 或 @param 、自闭合元素(例如“

”)等,并且 return 因这个 而生成非零值,从而导致发布失败。然而,正如我提到的,该项目相当大,虽然完成 javadoc 文档会更好,但目前不可行。

幸运的是,javadoc 8 提供了一个禁用迂腐的选项:-Xdoclint:none 几乎可以使它安静下来,允许我 运行 发布操作通过将其添加到 javacOptions。

然而,正如我所说,其他团队成员仍在使用 java 7,不幸的是,javadoc 7 不支持该选项,所以如果我按 build.sbt 文件使用此选项将在其他机器上失败。

所以现在我想知道我能做什么。在我看来,有很多选择,none 其中 "simple enough" 似乎可以解决这个愚蠢的问题:

希望还有另一个我遗漏的选项可以让我,例如,根据 java 版本设置 javadoc 选项?或任何其他不需要触摸 build.sbt 文件以外的任何东西...

谢谢!

大卫

是的,您可以根据 Java 版本设置 Javadoc 选项:

javacOptions in Compile ++=
  sys.props("java.version").split('.') match {
    case Array("1", n, _*) if n.toInt <= 7 =>
      Seq()
    case _ =>
      Seq("-Xdoclint:none")
  }