你好,
此 PR 使我们对 JDK 16 的支持更进了一步(参见 #24402)。
我正处于这样一个阶段,我的机器出现随机故障,似乎与网络错误和超时有关,所以我既有信心又迫切地想分享我的初稿。
本质上,PR 用buildJavaHome
一个新属性取代了原来的功能toolchainVersion
,该属性控制是否应该为编译、javadoc 和测试运行配置可选工具链。
我应该指出,spring-boot-gradle-plugin
有多个问题。当前版本都不支持 JDK 16,因此很多测试失败。不幸的是,您不能在 中提供空流GradleCompatibilityExtension.provideTestTemplateInvocationContexts
。我有一些 hacky 代码可以解决这个问题,但我认为一个简单的排除就足够了。例如,我使用了以下内容:
./gradlew build -x :spring-boot-project:spring-boot-tools:spring-boot-gradle-plugin:test -x :spring-boot-project:spring-boot-tools:spring-boot-gradle-plugin:validatePlugins -PtoolchainVersion=16
如您所见,我validatePlugins
也排除了该任务,该任务由于https://github.com/gradle/gradle/issues/15538而失败。
不过,最大的问题还在于其他方面。在 JDK 16 和更具体的JEP-396中,我们默认启用了强封装。这破坏了很多测试和库。仅举几例:
AbstractServletWebServerFactoryTests
由于该字段被重置而导致的任何情况URL.factory
。CliTester
出于类似的原因JsonbTesterTests
由于Johnzon 中的一个错误- 由于https://github.com/spring-projects/spring-ldap/issues/570,进行了几个与 LDAP 相关的测试
- ...
我决定添加--illegal-access=warn
,以便我们收到警告,但同时暂时允许访问。
请随意使用此 PR 进行测试。再说一遍 - 我今天没有一次测试是成功的,但所有测试失败都是随机的,并且在单独运行时都是成功的。
下一步如果这个 PR 最终被合并,我会解决实际的管道问题。我认为这对这个 PR 来说可能有点多,因为我需要向 CI 镜像添加辅助 JDK。(不过我希望可以重用我过去为 Boot 构建的一些逻辑)
请告诉我你的想法。 Christoph