Comment définir le niveau de langue dans Gradle? (donc c’est IDE-agnostique)

Je voudrais définir le niveau de langue Java en dégradé, d’une manière agnostique IDE.

sourceCompatibility = 1.x au niveau racine semble obsolète dans Gradle 2.21.

(edit: ou est-ce que c’est? IntelliJ me donne une erreur d’inspection groovy)

Alors j’ai trouvé ça, ça marche.

 idea { project { languageLevel = '1.7' } } 

Mais la configuration n’est-elle pas liée à IntelliJ IDEA, à cause de la structure de l’ idea { }

Existe-t-il un moyen de procéder de la sorte sans passer par IDE?

J’aimerais que mon script de construction de gradle soit exécuté dans n’importe quel IDE (que ce soit IntelliJ IDEA ou Eclipse) ou sur Jenkins (ou autre).

Si vous utilisez Gradle en ligne de commande, le niveau de langue fonctionne comme spécifié dans le fichier build.gradle .

Mais lors de l’importation du projet java Gradle dans IntelliJ IDEA, le plug-in de Gradle se charge de générer les fichiers de paramétrage du projet IDEA,

Malheureusement, le plug-in ne respecte pas la propriété sourceCompatibility / targetCompatibility de build.gradle. Il utilise plutôt le paramètre IDEA: File -> Other Settings -> Default Project Structure -> Project Language Level -> 6 (By default). entrez la description de l'image ici

Donc, je pense que ceci est un bug du plugin idée de Gradle. voir https://issues.gradle.org/browse/GRADLE-2198

Actuellement, je dois parfois changer le niveau de langue dans la boîte de dialog ci-dessus.

La façon de faire cela pour les générations CLI est montrée. Cependant, je ne suis pas sûr que chaque IDE le détectera.

 allprojects { tasks.withType(JavaComstack) { sourceCompatibility = '1.7' targetCompatibility = '1.7' } } 

S’ils sont définis sous comstackJava vous n’obtiendrez pas l’avertissement. IntelliJ et gradle le respectent tous les deux.

 comstackJava { sourceCompatibility = '1.7' targetCompatibility = '1.7' } 

Comme pour tout changement de fichier de classe, vous aurez besoin de la synchronisation pour qu’IntelliJ puisse prendre en compte les modifications.

Sync

dans la fermeture android de votre build.gradle dans le module de votre application:

 android { comstackSdkVersion 27 buildToolsVersion "26.0.2" // etc // other things // add this comstackOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }