在SBT

时间:2015-12-11 20:15:32

标签: sbt javadoc

我刚刚开始研究使用SBT进行构建的大型项目。我安装了一台安装了Java 8的新计算机,但团队的其他成员仍使用Java 7.就代码而言,这不是问题,因为我们都设置了生成v7字节代码。

尝试使用publishLocal操作发布项目时出现问题。请记住,虽然我对SBT很新,但我说/假设的一些事情可能不准确。

我们使用sbt 0.13。当我运行命令sbt publishLocal时,它会运行doc操作,然后运行javadoc来生成文档。由于我安装了java 1.8,它使用了相应版本的javadoc,让我们说实话是一个真正的痛苦,抱怨每一个缺失的@return或@param,自闭元素(例如“< p /> ;“)等等,因此而返回非零值,从而使发布失败。但是,正如我所提到的,该项目相当大,虽然最好完成javadoc文档,但目前还不可行。

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

但是,正如我所说,其他团队成员仍在使用java 7,不幸的是,javadoc 7不支持该选项,因此如果我使用此选项推送build.sbt文件,它将在其他计算机上失败。

所以现在我想知道我能做些什么。我看待它的方式,有很多选项,其中没有一个看起来“足够简单”来解决这个愚蠢的问题:

  • 在本地降级到java 7(并不是有两个并发版本的大粉丝)
  • 让所有其他团队成员升级到java 8(对他们来说很痛苦)
  • 解决整个项目中的所有javadoc问题(每个人都很痛苦)

希望我还缺少另一个选项,例如,允许我根据java版本设置javadoc选项吗?或其他任何不需要触及除build.sbt文件以外的任何内容...

谢谢!

大卫

1 个答案:

答案 0 :(得分:1)

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

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