Как можно включить —enable-preview для всех подмодулей Gradle, чтобы он сохранялся и в IntelliJ IDEA?

#java #gradle #intellij-idea #preview

#java #gradle #intellij-idea #Предварительный просмотр

Вопрос:

Со следующей настройкой Gradle

 
sourceCompatibility = 1.12
targetCompatibility = 1.12

tasks.withType(JavaCompile) {
    options.incremental = true
    options.compilerArgs   

the project will be compiled, the tests executed and the artifacts built on JDK 12.
However, in IntelliJ with the following common project structure

 project
|_moduleA
  |_main
  |_test
|_moduleB
  |_main
  |_test
  

и уровень языка, установленный на 12 (предварительный просмотр) — Выражения переключения только проект и два модуля получают этот уровень языка. Однако модули main и test теряют настройки, и IDEA говорит, что настройки будут потеряны при обновлении проекта Gradle.
Итак, как можно применить параметр —enable-preview, чтобы исходные модули также сохраняли этот параметр?

Комментарии:

1. Это работает на уровне языка 12 (no new language features) . 12 (preview) пока не поддерживается Gradle. Попробуйте бета-версию 2019.1 , если она не работает у вас в выпуске 2018.3. Связанный запрос .

2. У меня была такая же проблема с плагином компилятора maven, я включаю —enable-preview как compilerArgs , но при повторном импорте он изменяет уровень языка модуля в intellij с 12 (предварительный просмотр) на 12 (без новых языковых функций), что сводило меня с ума от необходимости переключать его обратно, пока я не снял флажок автоматически импортировать проекты Maven.

Ответ №1:

У меня была такая же проблема, решаемая с помощью документации gradle:

 tasks.withType(JavaCompile) {
    options.compilerArgs  = "--enable-preview"
}
tasks.withType(Test) {
    jvmArgs  = "--enable-preview"
}
tasks.withType(JavaExec) {
    jvmArgs  = "--enable-preview"
}