Luego de indagar en diversos repositorios y páginas al concluir hemos hallado la resolución que te enseñamos pronto.
Solución:
Respuesta corta:
La forma correcta es usar los siguientes valores en
para diferentes versiones de Java:
- Java 8: 1.8 u 8
- java 9 : 9
- java 10 : 10
- java 11 : 11
- java 12 : 12
Entonces, para Java 11, debería ser:
11
Sin embargo, no estoy seguro de si Java 11 sería “1.11” (parece poco probable), y lo he visto especificado como solo “11” cuando uso maven-compiler-plugin, sin embargo, no estoy usando el complemento del compilador.
En realidad, al final todavía usa maven-compiler-plugin
compilar. Springboot solo configura un
propiedad tal que al cambiar este valor, está cambiando implícitamente maven-compiler-plugin
‘s y
al mismo valor que lo especificado en el
:
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
11
Respuesta detallada:
Parece que quieres detalles para convencerte.
Es porque cada proyecto de arranque de primavera extenderá el pom principal. spring-boot-starter-parent
que define
como sigue:
1.8
$java.version
$java.version
De los documentos de maven-compiler-plugin, maven.compiler.source
y maven.compiler.target
son propiedad del usuario para el y
parámetros de configuración. Debido al comportamiento de la propiedad de usuario, establecer estas dos propiedades en 11
significa establecer lo siguiente:
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
11
Desde el maven-compiler-plugin
documentos de nuevo, y
son los -source
y -target
argumento para el compilador de Java (javac
). Luego, desde los documentos de javac, podemos ver que estos dos argumentos pueden tener los siguientes valores:
- 1.6: No se introdujeron cambios de idioma en Java SE 6. Sin embargo, los errores de codificación en los archivos de origen ahora se informan como errores en lugar de advertencias, como se hacía en versiones anteriores de Java Platform, Standard Edition.
- 6 : Sinónimo de 1.6.
- 1.7: el compilador acepta código con características introducidas en Java SE 7.
- 7 : Sinónimo de 1.7.
- 1.8: el compilador acepta código con características introducidas en Java SE 8.
- 8 : Sinónimo de 1.8.
- 9: el compilador acepta código con características introducidas en Java SE 9.
- 10: el compilador acepta código con características introducidas en Java SE 10.
- 11: el compilador acepta código con características introducidas en Java SE 11.
- 12: el compilador acepta código con características introducidas en Java SE 12.
Por eso,
debe establecerse en 11
para Java 11.
Lo estoy agregando como respuesta para que pueda ser útil para más personas:
Desde Java 9 las versiones se especifican como 9
, 10
, 11
y así sucesivamente, en lugar de 1.8
, 1.7
etc. Algunas lecturas adicionales aquí.
La forma en que está especificando la versión JDK con
es correcto. Fue presentado con maven-compiler-plugin 3.6
y es equivalente a la forma antigua, como se muestra a continuación:
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
-- Using JDK 11 to compile
11 -- Using JDK 11 as target
Esta publicación puede ser útil para usar maven-compiler-plugin
con JDK11.
Si alguien busca especificar Java 11 como la versión que se usará en Spring (o Spring Boot) en un grado proyecto, luego use sourceCompatibility = ’11’ o sourceCompatibility = ‘1.11’ en su archivo build.gradle
plugins
id 'org.springframework.boot' version '2.1.4.RELEASE'
apply plugin: 'io.spring.dependency-management'
group = 'au.com.ranuka'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
//or
sourceCompatibility = '1.11'
repositories
mavenCentral()
dependencies
Si te ha resultado de ayuda este post, agradeceríamos que lo compartas con otros seniors así contrubuyes a extender nuestra información.