В многослойном проекте с Gradle 5.4, sourceSompatiblity с java 8 не вступает в силу - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь создать проект для нескольких сборок с разными версиями Java для некоторых подпроектов, используя Gradle 5.4 и Intellij.
Сначала я обновил все свои подпроекты так, чтобы в начале build.gradle

* был приведен код ниже.1003 *

После импорта проекта Gradle в Intellij, Intellij был обновлен с помощью файлов iml с такой строкой:

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">

Затем я обновил конкретный подпроект с Java 8 вместо Java 6, как показано ниже {code}применить плагин: 'java' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 {code}, но файлы iml не изменились.Я пробовал разные вещи, но кажется, что gradle игнорирует Java 8. Я изменил Java 8 на Java 7, и файл iml был обновлен до:

Я обновил файл Gradle с Java 9 с sourceCompatibility = JavaVersion.VERSION_1_8, а затем Gradleобновил все проекты для использования Java 8!даже подпроекты, в которых совместимость источника и цели установлена ​​на Java 1.6.Это ошибка или я что-то упустил?Что-то, чего я не знаю, связано ли это с тем, что когда я запускаю compileJava, я получаю следующее предупреждение:

warning: [options] bootstrap class path not set in conjunction with -source 1.6

1 Ответ

0 голосов
/ 20 мая 2019

Я мог бы решить это.Проблема заключалась в том, что языковым уровнем по умолчанию в 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:

<bytecodeTargetLevel>
  <module name="common" target="1.6" />
</bytecodeTargetLevel>

и в каждом iml-файле для уровня языка Java 1.6 был добавлен основной компонент, как показано ниже:

<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
...