Gradle,Javadoc和JDK版本

时间:2018-07-02 12:13:52

标签: gradle java-8 javadoc

我安装了多个JDK。

在我的build.gradle中,设置sourceCompatibility = 1.8以确保使用正确的那个。效果很好。

但是,Javadoc任务(./gradlew javadoc)似乎忽略了该任务,该任务失败并显示错误(error: package sun.net.www.protocol.http is not visible)-从this question得知这是一个问题Java 9中的一项新功能。

到目前为止,该项目仅针对Java 8。有一天它会升级到Java 9,但不是今天,所以我只想使用Java 8 javadoc生成器而不是Java 9版本。

我检查了task documentation,但似乎没有指定JDK版本的选项。我该怎么办?

我希望该解决方案是Gradle配置,因此可以轻松地与不同机器上的其他开发人员共享。

看到该行为的版本版本(通过IntelliJ安装):

------------------------------------------------------------
Gradle 4.4
------------------------------------------------------------

Build time:   2017-12-06 09:05:06 UTC
Revision:     cf7821a6f79f8e2a598df21780e3ff7ce8db2b82

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          10.0.1 (Oracle Corporation 10.0.1+10-Debian-4)
OS:           Linux 4.16.0-2-amd64 amd64

其中有警告而不是Javadoc任务失败的版本(通过Debian的仓库安装):

------------------------------------------------------------
Gradle 3.4.1
------------------------------------------------------------

Build time:   2012-12-21 00:00:00 UTC
Revision:     none

Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.10.3 compiled on June 13 2018
JVM:          10.0.1 (Oracle Corporation 10.0.1+10-Debian-4)
OS:           Linux 4.16.0-2-amd64 amd64

编辑-我发现this page指定了一个“ -source release ”参数,该参数可能是此问题的解决方案,但是我找不到应如何调用它:

javadoc {
    options.addStringOption('-source', '8')
}

此程序可以编译并在没有任何警告的情况下运行(在build.gradle中,但不会更改任何内容,也不会出现在/build/tmp/javadoc/javadoc.options中。

2 个答案:

答案 0 :(得分:0)

我通过以下方式更改了路径中可用的版本:

export JAVA_HOME=/usr/lib/jvm/default-java

答案 1 :(得分:0)

javadoc {
  options.source = "8"
}

可能需要将其添加到现有的javadocjavadoc.optionsoptions块中。

它应该是字符串,而不是整数。不确定为什么Java插件不会自动设置它。