【问题标题】:Enforce Javadoc version in SBT在 SBT 中强制执行 Javadoc 版本
【发布时间】:2016-03-17 20:32:11
【问题描述】:

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

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

我们使用 sbt 0.13。当我运行命令 sbt publishLocal 时,它会运行 doc 操作,然后再运行 javadoc 以生成文档。由于我安装了 java 1.8,它使用相应版本的 javadoc,老实说,这真是让人头疼,抱怨每一个缺少 @return 或 @param、自闭合元素(例如“

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

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

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

所以现在我想知道我能做什么。在我看来,有很多选择,但似乎没有一个“足够简单”来解决这个愚蠢的问题:

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

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

谢谢!

大卫

【问题讨论】:

    标签: sbt javadoc


    【解决方案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")
      }
    

    【讨论】:

    • 在 build.sbt 中使用相同的 sn-p 给我一个错误 - 抱怨期待 ) 而不是 } 由于在倒数第二行缺少引号但在修复后出现其他错误很有帮助,谢谢
    • 我刚刚修复了丢失的双引号。为了帮助看到这一点的其他人,您能否更具体地说明应该如何改进答案?
    • 也许我回答的语气是错误的——我很抱歉。我添加了引号,但它仍然给了我一些错误。调查它并将在此处更新。我认为这是一个很好的答案(因为我最近不得不查看一些使用 sbt 的 java 代码,导致 jdk8 中的 javadoc 更改出现问题)。
    猜你喜欢
    • 2013-10-13
    • 2013-11-01
    • 2010-10-30
    • 2014-10-17
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多