在 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 7(不太喜欢有两个并发版本)
- 让所有其他团队成员升级到 java 8(他们很痛苦)
- 修复整个项目中的所有javadoc问题(大家痛苦)
希望还有另一个我遗漏的选项可以让我,例如,根据 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")
}
我刚开始从事一个使用 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 7(不太喜欢有两个并发版本)
- 让所有其他团队成员升级到 java 8(他们很痛苦)
- 修复整个项目中的所有javadoc问题(大家痛苦)
希望还有另一个我遗漏的选项可以让我,例如,根据 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")
}