the run please intellij idea home configurar intellij-idea gradle

intellij-idea - run - please set the gradle jvm option



¿Cómo se determina el nivel de lenguaje Gradle de IntelliJ IDEA? (3)

El complemento JetGradle que viene con IntelliJ muestra que mi proyecto tiene un conflicto. Dice que mi nivel de lenguaje IDE es 1.7 y que mi nivel de lenguaje Gradle es 1.6.

El siguiente código imprime 1.7 para todo:

compileJava { println project.sourceCompatibility println project.targetCompatibility println sourceCompatibility println targetCompatibility }

Ejecutar Gradle desde la línea de comandos funciona bien. Ejecutarlo dentro de IDEA también funciona. Ambos están utilizando el 1.7 JDK. Mi proyecto y módulo IDEA también están configurados para usar 1.7.

Cuando importo el proyecto a través del script de compilación de Gradle, la versión se establece por defecto en 1.6 Lo he cambiado a 1.7.

¿Qué es este "nivel de lenguaje Gradle" y cómo puedo modificarlo?

¡Gracias!


Gradle no expone el nivel de idioma a través de la api de herramientas, por lo que creo que este es solo el lenguaje de "proyecto predeterminado" tal como se define en intellij.

Puede ver los detalles y volver al tema de gradle correspondiente en este boleto de youtrack de Jetbrains

En cuanto a "cómo solucionarlo", creo que la única opción real es no usar el uso de Jetgradle y el complemento de la idea de Gradle . Intellij 12.1 tendrá un plugin de jetgradle muy mejorado, pero si la información no está en la api de herramientas, es difícil ver cómo se puede arreglar esto.

EDITAR: Gradle acaba de publicar un RC para la versión 2.11 que (¡finalmente!) Incluye esta función, consulte las notas de la versión para obtener detalles que explican que este soporte está disponible tanto para la herramienta api (es decir, intellij jetgradle) como para el complemento de la idea de gradle.


Llego un poco tarde al juego aquí, pero lo uso para resolver el problema:

apply plugin: ''idea'' allprojects { sourceCompatibility = 1.8 targetCompatibility = 1.8 } idea { project { jdkName = sourceCompatibility languageLevel = sourceCompatibility ipr { withXml { def xml = """<component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="/$PROJECT_DIR/$" /> <option name="gradleJvm" value="$sourceCompatibility" /> <option name="modules"> <set> <option value="/$PROJECT_DIR/$" /> </set> </option> <option name="myModules"> <set> <option value="/$PROJECT_DIR/$" /> </set> </option> </GradleProjectSettings> </option> </component>""" def node = it.asNode() node.append(new XmlParser().parseText(xml)) } } } module { iml { withXml { def root = it.asNode() root.@''external.linked.project.id'' = project.name root.@''external.linked.project.path'' = ''$MODULE_DIR$'' root.@''external.root.project.path'' = ''$MODULE_DIR$'' root.@''external.system.id'' = "GRADLE" root.@''external.system.module.group'' = project.group root.@''external.system.module.version'' = project.version } } } }

Luego use la ./gradlew idea para generar los metadatos del proyecto que establecen el lenguaje del proyecto en 1.8. EDITAR: El complemento de la idea de Gradle trata solo con metadatos basados ​​en archivos, en lugar de en directorios (.idea /). Si aplica esto a un proyecto existente que utiliza metadatos basados ​​en directorios, deberá eliminar la carpeta .idea / en la raíz del proyecto

Nota: la configuración de jdkName en ''1.8'' asume que hay un Java SDK registrado en Intellij con el nombre ''1.8''.

ACTUALIZACIÓN 1: el archivo ipr generado contiene este bloque, que indica el uso de Java 1.8 (tenga en cuenta los atributos ''languageLevel'' y ''project-jdk-name'')

<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-type="JavaSDK" assert-jdk-15="true" project-jdk-name="1.8"> <output url="file://$PROJECT_DIR$/out"/> </component>

Esto debería corresponder directamente con lo que ve en el cuadro de diálogo Estructura del proyecto:

ACTUALIZACIÓN 2: En la carga del proyecto, Intellij le solicita que "Importe el Proyecto Gradle". Por alguna razón, esto ignora el nivel de idioma configurado en el archivo ipr, y por defecto es 1.6. La forma de solucionar esto es preconfigurar los archivos ipr y iml aplicables para que esté al tanto de la integración de Gradle. De esta manera, no se le pedirá que importe el proyecto de Gradle y el nivel de idioma se mantiene en 1.8. El bloque de código anterior se ha actualizado para incluir la configuración necesaria.


No parece ser compatible, pero es una solución simple de una sola vez.

  • Navegue hasta: Archivo -> Estructura del proyecto Seleccione "Módulos" en
  • Configuración del proyecto. (ya debería estar) Cambiar "Nivel de idioma" a 7.0

Alternativamente

  • Desglose hasta un error de compilación real en el archivo. Por lo general, esto es algo así como manejar múltiples errores en un bloque catch.
  • Seleccione el ícono de ayuda rojo que aparece y "configure el nivel de idioma en 1.7"