tutorial que español consola comandos java maven java-10 java-11 module-info

java - que - maven tutorial español pdf



No se puede compilar un proyecto Java 10/Java 11 simple con Maven (5)

ACTUALIZAR

La respuesta ahora es obsoleta. Mira esta respuesta .

maven-compiler-plugin depende de la versión anterior de ASM que aún no es compatible con Java 10 (y Java 11). Sin embargo, es posible especificar explícitamente la versión correcta de ASM:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <release>10</release> </configuration> <dependencies> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> <version>6.2</version> <!-- Use newer version of ASM --> </dependency> </dependencies> </plugin>

Puede encontrar lo último en https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm&core=gav

Tengo un proyecto trivial de Maven:

src └── main └── java └── module-info.java pom.xml

pom.xml:

<groupId>org.example</groupId> <artifactId>example</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>example</name> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <release>10</release> </configuration> </plugin> </plugins> </build>

Cuando construyo el proyecto a través de mvn -X install -DskipTests=true , falla:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile (default-testCompile) on project example: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345) at org.apache.maven.cli.MavenCli.main(MavenCli.java:191) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:testCompile failed. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 20 more Caused by: java.lang.IllegalArgumentException at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.codehaus.plexus.languages.java.jpms.AsmModuleInfoParser.parse(AsmModuleInfoParser.java:80) at org.codehaus.plexus.languages.java.jpms.AsmModuleInfoParser.getModuleDescriptor(AsmModuleInfoParser.java:54) at org.codehaus.plexus.languages.java.jpms.LocationManager.resolvePaths(LocationManager.java:83) at org.apache.maven.plugin.compiler.TestCompilerMojo.preparePaths(TestCompilerMojo.java:281) at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:762) at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:176) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) ... 21 more

¿Hay alguna manera de arreglar esto?


Alternativamente, a partir del 30 de julio de 2018 para solucionar el problema anterior, se puede configurar la versión Java utilizada dentro de Maven para cualquier hasta JDK / 11 y hacer uso del maven-compiler-plugin:3.8.0 para especificar una versión de 9 , 10,11 sin ninguna dependencia explícita .

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>11</release> <!--or <release>10</release>--> </configuration> </plugin>

Nota : - El valor predeterminado para el origen / destino se ha elevado de 1.5 a 1.6 con esta versión. - Notas de la versión.

Editar [30.12.2018]

De hecho, puede hacer uso de la misma versión de maven-compiler-plugin mientras compila el código contra JDK / 12 también.

Más detalles y una configuración de muestra sobre cómo compilar una función de vista previa JDK12 con Maven .


Especifique maven.compiler.source y versiones de destino.

1) Versión Maven que admite jdk que utilizas. En mi caso JDK 11 y maven 3.6.0.

2) pom.xml

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

Como alternativa, puede especificar completamente el complemento del compilador maven. Ver respuestas anteriores. Es más corto en mi ejemplo :)

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>11</release> </configuration> </plugin> </plugins> </build>

3) reconstruya el proyecto para evitar errores de compilación en su IDE.

4) Si aún no funciona. En Intellij Idea, prefiero usar terminal en lugar de usar terminal del sistema operativo. Luego, en Idea, vaya a archivo -> configuración -> herramientas de compilación -> maven. Trabajo con maven que descargué de apache (por defecto, Idea usa maven incluido). Reinicie Idea y ejecute mvn clean install nuevamente. También asegúrese de tener las variables de entorno Path , MAVEN_HOME , JAVA_HOME correctas.

También vi esta frase, pero no funciona.

<maven.compiler.release>11</maven.compiler.release>


Parece necesario aumentar su complemento de compilador maven a 3.8.0, pero no es suficiente. Si todavía tiene problemas, también debe asegurarse de que su variable de entorno JAVA_HOME esté configurada en Java 10 (u 11) si está ejecutando desde la línea de comandos. (El mensaje de error que recibe no le dirá esto). O si está ejecutando desde un IDE, debe asegurarse de que esté configurado para ejecutar maven con su JDK actual.


Puede que no sea exactamente el mismo error, pero tuve uno similar.

Verifique la versión Java de Maven

Dado que Maven también se está ejecutando con Java, verifique primero con qué versión se está ejecutando su Maven:

mvn --version | grep Java

Vuelve:

Java versión 1.8.0_151, proveedor: Oracle Corporation, tiempo de ejecución: C: / tools / jdk / openjdk1.8

Versión incompatible

Aquí arriba mi maven se está ejecutando con Java Version 1.8.0_151 . Entonces, incluso si especifico maven para compilar con Java 11 :

<properties> <java.version>11</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> </properties>

Lógicamente imprimirá este error:

[ERROR] Error al ejecutar el objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.8.0: compile (default-compile) on project efa-example-commons-task: Error fatal al compilar: versión de destino no válida: 11 -> [Ayuda 1]

Cómo configurar una versión específica de Java para Maven

Lo lógico es configurar una versión de Java superior a Maven (por ejemplo, Java versión 11 en lugar de 1.8).

Maven utiliza la variable de entorno JAVA_HOME para encontrar la versión de Java que se ejecutará. Cambie esta variable al JDK con el que desea compilar (por ejemplo, OpenJDK 11).

Prueba de cordura

Luego ejecute nuevamente mvn --version para asegurarse de que la configuración ha sido atendida:

λ mvn --version | grep Java Java versión: 11.0.2, proveedor: Oracle Corporation, tiempo de ejecución: C: / tools / jdk / openjdk11

Lo cual es mucho mejor y correcto compilar código escrito con las especificaciones de Java 11.