wake-up-neo.com

stoppen Sie IntelliJ IDEA jedes Mal, wenn der Pom neu geladen wird, die Sprache der Java-Sprache wechseln (oder die Standardebene der Projektsprache ändern)

Mit IntelliJ 12 habe ich ein Java-Projekt und verwende Maven mit einer pom.xml . Mein Projekt verwendet Java8, aber es scheint, dass die Standardebene der Projektsprache beim Importieren des Projekts auf 6 festgelegt wurde.

Ich kann die Sprachebene auf 8.0 (F4 -> Module -> Sprachebene) ändern. Bei jeder Bearbeitung meiner Datei pom.xml wird die Projektebene jedoch wieder auf "Projektsprachenebene verwenden" umgestellt, und ich muss diese Einstellungen erneut bearbeiten nochmal.

Gibt es etwas, das ich zur pom.xml hinzufügen muss, um die Standardsprache auf 8.0 zu setzen?

109
Quentin

Nach Marks Kommentar, wie es geht:

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
135
vikingsteve

Eine kürzere Version von vikingsteve lautet:

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
77
DieterDP

Ich denke, das hat mit einem konzeptionellen Konflikt zwischen dem Maven-Compiler-Plugin und der IntelliJ-Idee zu tun. Offenbar haben die neueren Versionen des Compiler-Plugins einen Standardwert von 1,5 (siehe http://maven.Apache.org/plugins/maven-compiler-plugin/ ). Wenn also das Compiler-Plugin in einem Projekt überhaupt verwendet wird und die Compiler-Ebene nicht explizit in der pom.xml festgelegt ist, wird die Ebene bei jeder erneuten Verarbeitung des POM auf den Standardwert zurückgesetzt. 

Es gibt also einen konzeptionellen Konflikt, der von Intellij IDEA ignoriert wird. Die IDE erlaubt immer noch die Einstellung der Projekt- und Moduleinstellungen, gibt jedoch keine Warnung oder Rückmeldung, dass diese Einstellung von pom.xml gesteuert wird. Die Lösung besteht entweder darin, das Überschreiben der POM-Compiler-Plug-In-Einstellung explizit zuzulassen (möglicherweise nicht sinnvoll, da dies geschieht, wenn Sie Maven in der Befehlszeile verwenden), oder die Steuerelemente in der IDE zu deaktivieren, wenn diese Einstellung aus dem POM übernommen wird effektiv 

Gegenwärtig besteht die Lösung darin, die gewünschte Compiler-Ebene im Compiler-Plugin in pom, dem Re-Import, einzustellen, anstatt zu versuchen, sie in den Moduleinstellungen festzulegen.

20

Es gibt zwei Möglichkeiten, dies zu tun. Fügen Sie eine davon in Ihre Datei pom.xml ein:

Zuerst Eigenschaften hinzufügen

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

second- Add Plugin

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>

Lass es mich wissen, wenn es hilft.

6
Anuj Teotia

Ich aktualisiere ein Projekt von JDK 8 auf JDK 10+. Ich hatte die Compiler-Eigenschaften korrekt wie folgt angegeben:

<properties>
  <maven.compiler.source>10</maven.compiler.source>
  <maven.compiler.target>10</maven.compiler.target>
</properties>

Das Ideenprojekt würde jedoch das Sprachniveau auf 8 zurücksetzen.

Schließlich fand ich heraus, dass der Importprozess von Idea Maven JDK 8 verwendete, um das Projekt zu importieren, wodurch das Sprachniveau auf <= 8 begrenzt wurde. 

Zum Fixieren Ich habe die Eigenschaft 'JDK for importer' unter Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Build-Tools -> Maven -> Importieren für die Verwendung von JDK 11 aktualisiert.

 enter image description here

1
danw

In meinem Fall half keine der Lösungen. Ich musste in meinem pom.xml keine Java-Version angeben.

Ich musste die <project-name>.iml-Datei öffnen und die JDK-Version dort ändern.

Original:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="Java_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
    <!-- ...                                                   ^ -->
    <!-- ...                                                   | -->

Aktualisierte:

<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="Java_MODULE" version="4">
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <!-- ...                                                   ^ -->
    <!-- ...                                                   | -->

Das macht überhaupt keinen Sinn. Ich habe zu keinem Zeitpunkt eine JDK-Version für Java 1.5 angegeben.

1
kleinfreund

Ich hatte viel mit diesem Problem zu kämpfen, weil ich mit Dropwizard Microservices baute. Schließlich fand ich heraus, dass ich meine Build-Eigenschaften in der falschenpom-Datei hatte (der pom.xml des Hauptdienstes).

Obwohl die anderen Pakete eher wie Libraries sind, konnte ich die Java 8-Syntax nicht verwenden.

Wenn ich das Build-Plugin in der "globalen" .pom.xml-Datei umgestaltete, konnten alle untergeordneten Container die neue Syntax verwenden.

Kann jemandem helfen, der Probleme mit Projekten mit mehreren Containern hat

1
user3677636

Ich musste noch einen weiteren Schritt ausführen, zusätzlich zum Setzen der Maven Build-Eigenschaften , Hinzufügen des Maven-Compiler-Plugins und /Ändern der Java-Version in der .iml-Datei . (jeweils bereits in den anderen Antworten dokumentiert). Sie müssen auch in den Einstellungen die Compilerversion einstellen .

0
hosford42

Für mich funktionierte die Lösung der Aktualisierung des POM (Plugins plus Properties) auf die erforderliche Java-Compilerversion (in meinem Fall 1_7), da jedoch die .iml-Datei für jedes Projekt mit dem ursprünglichen Pom (mit der Standard-Compilerversion von) erstellt wurde 1_5 (wie oben erklärt) hat eine JDK-Version von 1_5, die die Pom-Version noch überschreibt.

Ich habe den .idea-Ordner manuell gelöscht und das Modul mit einem Reimport aus dem aktualisierten Pom in IntelliJ importiert. Als ich das Modul aus dem aktualisierten POM reimportierte, konnte ich sehen, dass die iml-Dateien die aktualisierte JDK-Version hatten (in meinem Fall 1_7). 

0
Shirish Sakhare