2016-04-18 4 views
1

Ich habe ein Gradle-Projekt, das aus einem Android-Bibliotheksmodul und einem einfachen alten Java-Modul besteht. (Der Android-Bibliothek-Modul verfügt über eine Abhängigkeit von der Ebene Java-Modul.)Gradle Refresh in IntelliJ ändert das Sprachlevel der Module

In der build.gradle Datei des Android-Bibliothek-Modul Ich habe dies:

android { 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

Und in der build.gradle Datei des plain old Java-Modul ich habe dies:

compileJava { 
    sourceCompatibility = "1.8" 
    targetCompatibility = "1.8" 
} 

als ich die Gradle Taste IDEA in IntelliJ aktualisieren traf 15 das Sprachniveau für das Android-Modul Java 8 gesetzt ist (wie ich erwarten würde), aber das Sprachniveau des Java-Modul auf Java 1.6 gesetzt. Warum ist dies der Fall und gibt es eine Möglichkeit für IntelliJ, die Sprachebene des Java-Moduls stattdessen auf Java 8 bei einer Aktualisierung einzustellen?

Antwort

1

können Sie nur JavaVersion.VERSION_1_8 verwenden, wenn Sie den neuen Jack Compiler oder die Retrolambda Plugin für Gradle verwenden.

So sollten Sie verwenden:

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

Was die Intellij/Android Studio Spracheinstellungen geht:

  1. Datei -> Projektstruktur:

enter image description here

  1. Sie sollen die Projektsprache Einstellungen entsprechend eingestellt:

enter image description here

+0

Dank für den Zeiger auf die Java-Version für die Android-Modul fällt bis auf '1.7'. (Ich dachte, ich könnte mit Java 1.8 kompilieren, solange ich nicht die Java 1.8-Sprachfunktionen verwendet habe.) Ich habe die Java-Version im einfachen alten Java-Modul auch auf '1.7' gesetzt und nun setzt IntelliJ den' Projekt-Sprachlevel' zu '8' und der' Sprachlevel' beider Module im Projekt zu '7' automatisch jedes Mal wenn ich ein frisches mache. Seltsam, warum die Werte auf der Projektebene und auf der Modulebene unterschiedlich sind, aber es funktioniert für mich, also werde ich es für jetzt lassen. –

Verwandte Themen