Explain Codes LogoExplain Codes Logo

Stop IntelliJ IDEA from switching Java language level every time the pom is reloaded (or change the default project language level)

java
maven-settings
intellij-ide
java-compiler-plugin
Nikita BarsukovbyNikita Barsukov·Mar 7, 2025
TLDR

Stop IntelliJ IDEA from altering the Java version by including the maven.compiler.source and maven.compiler.target properties in your pom.xml:

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

This strategy solidifies your project's language level and bars IntelliJ IDEA from resetting it upon reloading the file. Make sure to replace 11 with your required Java version.

Additionally, you should specify the version of the maven-compiler-plugin in your pom.xml for further stability in your language level settings:

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build>

Verify and adjust the JDK version in the project's IntelliJ IDEA settings. Go to Build, Execution, Deployment > Build Tools > Maven > Importing. The JDK for importer should match your project's JDK version for consistency.

Lastly and most importantly, always remember to re-import the project or reload the pom.xml in IntelliJ after making changes.

Interfacing between IntelliJ IDEA and Apache Maven should be a smooth handoff, not a clumsy exchange. Let's examine the critical points in maintaining that fluent interaction.

Maintain consistent Java and Maven versions

Head to File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing in IntelliJ IDEA to match your Project SDK version with the necessary JDK version in your pom.xml. Consistent versions keep the software dance in rhythm.💃

Clarify Maven compiler plugin details

Unlike some surprises in life, the maven-compiler-plugin defaulting to language level 1.5 isn't a pleasant one. Setting the <source> and <target> in your pom.xml keeps these ghosts of Java past at bay.👻

Keeping the environment stable

Implementing a command line Maven build with the pom.xml settings helps ensure your project compiles correctly with the desired Java level outside the hustle and bustle of the IDE.

By following these steps, IntelliJ IDEA should stop switching the project's language level unexpectedly.

Deep dive into player settings

  • Re-import Maven Projects: Sometimes a simple refresh is the secret sauce. 🔄
  • Maven Profiles: Create a profile for each desired state. It's like having a playlist for every mood. 🎧
  • JDK for Importer: Choose the right amplifier for your tunes in IntelliJ IDEA's Maven Importing settings. 📻

Troubleshooting tips

  • Mismatched JDK Versions: Make sure your local JDK and the pom.xml are singing from the same songsheet.🎤
  • Plugin Versions: Keep them up-to-date. It's like staying current with the music trends. 🎸
  • Properties vs Plugin Management: Properties can paint broad strokes, while Plugin Management offers precision and control.🖌️

Overriding IntelliJ defaults

IntelliJ IDEA may still override settings, so always check your Effective POM (in the Maven Tool Window) and IDE settings.