在 Gradle 5.4 的多构建项目中,java 8 的 sourceSompatiblity 未生效
In multibuild project with Gradle 5.4, sourceSompatiblity with java 8 is not taking effect
我正在尝试使用 Gradle 5.4 和 Intellij 为某些子项目创建具有不同 java 版本的多构建项目。
首先,我更新了我所有的子项目,在 build.gradle
的开头添加了以下代码
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
在 Intellij 中导入 Gradle 项目后,Intellij 已通过以下行更新了 iml 文件:
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
然后我用 java 8 而不是 Java 6 更新了一个特定的子项目,如下所示
{代码}
应用插件:'java'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = Java版本。VERSION_1_8
{代码}
但 iml 文件没有改变。我尝试了不同的东西,但似乎 gradle 忽略了 Java 8。我将 Java 8 更改为 Java 7 并且 iml 文件已更新为:
我用 java 9 和 sourceCompatibility = JavaVersion.VERSION_1_8
更新了 gradle 文件,然后 gradle 更新了所有项目以使用 java 8!
甚至将源和目标兼容性设置为 Java 1.6 的子项目。
这是一个错误还是我应该遗漏什么?
我不知道是否相关的是,当我 运行 compileJava 时,我收到以下警告:
warning: [options] bootstrap class path not set in conjunction with -source 1.6
我可以解决这个问题。问题是 Intellij Project 中的默认语言级别是 java 6。我将其更改为 Java 8。然后在主项目构建 gradle 子项目下我添加了
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
然后只针对我想用Java编译它们的子项目 6,在它们的build.gradle开头我添加了
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
然后在项目的 .ipr 文件中每个 java 1.6 我得到一个字节码目标级别:
<bytecodeTargetLevel>
<module name="common" target="1.6" />
</bytecodeTargetLevel>
并且在 java 1.6 语言级别的每个 iml 文件中添加到主要组件如下:
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
我正在尝试使用 Gradle 5.4 和 Intellij 为某些子项目创建具有不同 java 版本的多构建项目。
首先,我更新了我所有的子项目,在 build.gradle
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
在 Intellij 中导入 Gradle 项目后,Intellij 已通过以下行更新了 iml 文件:
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
然后我用 java 8 而不是 Java 6 更新了一个特定的子项目,如下所示 {代码} 应用插件:'java' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = Java版本。VERSION_1_8 {代码} 但 iml 文件没有改变。我尝试了不同的东西,但似乎 gradle 忽略了 Java 8。我将 Java 8 更改为 Java 7 并且 iml 文件已更新为:
我用 java 9 和 sourceCompatibility = JavaVersion.VERSION_1_8
更新了 gradle 文件,然后 gradle 更新了所有项目以使用 java 8!
甚至将源和目标兼容性设置为 Java 1.6 的子项目。
这是一个错误还是我应该遗漏什么?
我不知道是否相关的是,当我 运行 compileJava 时,我收到以下警告:
warning: [options] bootstrap class path not set in conjunction with -source 1.6
我可以解决这个问题。问题是 Intellij Project 中的默认语言级别是 java 6。我将其更改为 Java 8。然后在主项目构建 gradle 子项目下我添加了
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
然后只针对我想用Java编译它们的子项目 6,在它们的build.gradle开头我添加了
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
然后在项目的 .ipr 文件中每个 java 1.6 我得到一个字节码目标级别:
<bytecodeTargetLevel>
<module name="common" target="1.6" />
</bytecodeTargetLevel>
并且在 java 1.6 语言级别的每个 iml 文件中添加到主要组件如下:
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">