Как установить уровень языка в Gradle? (так что это IDE-агностик)
Я хотел бы установить уровень языка java в gradle, в IDE-агностической манере.
sourceCompatibility = 1.x
на корневом уровне кажется устаревшим в Gradle 2.21.
(edit: или это? IntelliJ дает мне ошибку проверки groovy)
Итак, я нашел, что работает.
idea {
project {
languageLevel = '1.7'
}
}
но разве конфигурация здесь не привязывает gradle к идее IntelliJ, из-за idea { }
структура...
есть ли способ сделать это в IDE-агностик мода?
Я хотел бы, чтобы мой скрипт сборки gradle запускался в любой IDE (будь то IntelliJ IDEA или Eclipse) или на Jenkins (или что-то еще).
4 ответов
Если вы используете Gradle в командной строке, уровень языка работает штрафы, как указано в .
но при импорте проекта Gradle java в IntelliJ IDEA плагин Gradle берет на себя ответственность за создание файлов настроек проекта IDEA,
к сожалению, плагин не уважает сборку.sourceCompatibility Gradle в в/targetCompatibility собственность,
вместо этого он использует настройку IDEA:
File -> Other Settings -> Default Project Structure -> Project Language Level -> 6 (By default).
Итак, я думаю, что это ошибка плагин идеи gradle. см.https://issues.gradle.org/browse/GRADLE-2198
В настоящее время я должен иногда менять уровень языка в диалоговом окне выше.
показан способ сделать это для сборок CLI. Однако я не уверен, что каждая IDE подберет это.
allprojects {
tasks.withType(JavaCompile) {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
}
}
если они определены в compileJava
вы не получите предупреждение, а IntelliJ и gradle уважают его.
compileJava {
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
}
Как и при любом изменении файла gradle, вам понадобится синхронизация, чтобы IntelliJ мог принимать изменения.
внутри android
закрытие сборки.gradle внутри вашего модуля приложения:
android {
compileSdkVersion 27
buildToolsVersion "26.0.2"
// etc
// other things
// add this
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}