¿Cómo cambiar la versión de Java para Maven en IntelliJ?

82

Soy nuevo en Maven e IntelliJ IDEA.

Tengo un proyecto de Maven escrito en Java 8. Siempre que intento compilarlo (ventana Proyectos de Maven -> Ciclo de vida -> compilar -> Ejecutar compilación de Maven) obtengo una serie de errores de compilación:

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

¿Dónde se supone que debo cambiar el valor del parámetro -source? Intenté agregarlo como un parámetro adicional en Configuración -> Compilador -> Compilador de Java, pero obtuve los mismos resultados.

Los niveles de idioma del proyecto y del módulo se establecen en 8.0.

Estoy usando Maven 3.2.3 e IntelliJ IDEA Community Edition 13.1.2.

tearvisus
fuente
¿lo ha cambiado en un archivo pom?
EIS
Mi enfoque fue configurarlos directamente en IntelliJ de esta manera: http://stackoverflow.com/a/37648709/5154418
Yumi Koizumi

Respuestas:

117

O más fácil, agregue esto a la propertiessección de su pom :

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Hamid
fuente
Esto no funciona en 2017.2.5 para mí, hasta que usé etiquetas <build / configuration>.
Pawel Veselov
Ninguna de las configuraciones de IntelliJ hizo nada por mí. Esta respuesta es lo único que lo solucionó después de horas de búsqueda. ¡Gracias!
Tim
12
Funciona bien, pero no olvide volver a importar el archivo pom.xml, haga clic derecho -> Maven -> Reimport
David Lilljegren
¡Esto debe colocarse en el pom generado por start.spring.io ! No sé por qué no lo hacen. Lo que pusieron allí "<java.version> 1.8 </java.version>" es inútil.
User007
1
Asegúrese de tener ya el SDK / JDK requerido en la Configuración de plataforma.
gkephorus
34

Resumen:

  • 'maven-compiler-plugin' ¡ SIEMPRE funciona! Es lo que te sugiero que uses.

Para cambiar el nivel de idioma, utilice

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

¡Las propiedades no siempre cambian el nivel de idioma de Intellij!

En el siguiente código, 1.4 se configuró en el pom usando maven-compiler-plugin
(el jdk de Intellij es 1.8) y el nivel de idioma del proyecto se cambió en consecuencia a 1.4:

ingrese la descripción de la imagen aquí

¡Fue revisado dos veces! Es un ejemplo. La mayoría de las veces, no degradará la versión del JDK a 1.4.

Por supuesto, si usa propiedades, digamos que coloca el pom 1.8, luego, si usa un JDK 1.8 en Intellij (el nivel de idioma predeterminado es 1.8 o el idioma predeterminado se cambió manualmente), entonces podrá codificar en 1.8 PERO en la compilación de mvn, las propiedades NO se verán y usará Maven 1.5 y la compilación NO tendrá éxito.

Rudy Vissers
fuente
Por cierto y creo que esto creó la confusión, Eclipse admite maven.compiler.source y maven.compiler.target.
Rudy Vissers
Actualicé el archivo pom, pero también necesitaba cambiar esto en la Configuración del proyecto para que funcione.
gloomy.penguin
@ gloomy.penguin: Acabo de crear un nuevo proyecto Idea a partir del arquetipo de inicio rápido de Maven. Luego miré Configuración del proyecto ---> Módulos y leí 5.0 - palabra clave 'enum', genérico, autoboxing, etc. Luego agregué la fuente (1.6) y el destino (1.6) de maven-compiler-plugin e hice exactamente el mismo y leí 6- @ Override en interfaces. Creo que hay confusión. NO QUEREMOS CAMBIAR EL SDK POR DEFECTO. No hay nada que podamos hacer al respecto.
Rudy Vissers
@gloomy: penguin: Si JDK 1.5 está configurado de forma predeterminada y cambia la configuración en el pom para preguntar 1.6, Idea no cambiará el SDK predeterminado a 1.6 o 1.7 o 1.8 incluso si ha agregado estos jdks a Intellij. La configuración en el pom le pide a Idea que cambie la versión de origen y destino usando el sdk predeterminado. En el ejemplo de la imagen se preguntó 1.4 y el jdk predeterminado es 1.8 y, por supuesto, está bien. Debe configurar un jdk predeterminado que sea compatible con las versiones que configuró en pom.
Rudy Vissers
@ gloomy-penguin: Entonces 1.8 admitirá todas las configuraciones (¡¡¡pero no 9 !!!). Espero eso ayude. Repito que acabo de comprobar y funciona. Y verifique el resultado en Configuración del proyecto ---> Módulos.
Rudy Vissers
7

Cambie la fuente como se muestra a continuación en pom.xml

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Rahul
fuente
5

No creo que ninguna respuesta a la pregunta aborde la preocupación: " ... en IntelliJ ".

Estos son los pasos:

  • Vaya a Preferencias en IntelliJ (o Acceso directo ⌘ +,)
  • Compilación, ejecución, implementación> Maven> Importador : seleccione el menú desplegable " JDK para importador ", luego seleccione su versión de Java preferida, haga clic en Aplicar
  • Generar, ejecución, implantación> Maven> Runner - seleccione la opción " JRE desplegable" seleccione su versión de Java preferido, Haga clic en Aplicar
  • Haga clic en Aceptar
papigee
fuente
4

Agregar las siguientes líneas a la raíz (nivel de proyecto) pom.xml me funcionó para resolver el problema anterior: (ambas opciones funcionaron para mí)

Opción 1:

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

Opcion 2:

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

publicado originalmente en: IntelliJ IDEA 13 usa Java 1.5 a pesar de estar configurado en 1.7

Amit Kaneria
fuente
1

Hay dos formas de hacer esto:

Primero: agregar propiedades

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

segundo- Agregar complemento

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>
Anuj Teotia
fuente
0

Debe agregar el siguiente código en su pom.xml para forzar el cambio de nivel de idioma

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

ahora intelliJ 2019.3 CE hace esto por usted si va a importar y luego alt + enter donde obtendrá una opción que dice "cambiar el nivel de idioma a 8 para usar esta funcionalidad"

madroid
fuente
0

abra la terminal de ubuntu, vaya a su directorio raíz y escriba:

export JAVA_HOME = <path to jdk>

por ejemplo, me funciona bien {haz lo mismo en la terminal IntelliJ}.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

para comprobar el tipo de valor establecido echo $JAVA_HOME

para comprobar el tipo de versión de maven: mvn -version

puede encontrar todas las rutas de los JDK escribiendo este comando y puede configurar la versión de JDK.

sudo update-alternatives --config java

también compruebe que tiene el mismo java -versiony javac -version.

Pankaj gupta
fuente