Установить уровень языка в Gradle и IntelliJ - PullRequest
0 голосов
/ 13 января 2020

Я установил уровень языка на 8 в настройках проекта IntelliJ, и я также попытался установить его в Gradle следующим образом:

   buildscript {
    ext.kotlinVersion = '1.3.41'

    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
        google()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"

    }

}

allprojects {

    version = '1.0'
    ext {
        appName = "VolumeFlux"
        gdxVersion = '1.9.10'
        roboVMVersion = '2.3.8'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.8.0'
        visuiVersion = '1.4.2'
    }

    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
        google()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    }


    apply plugin: 'java'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

}

sourceCompatibility = 1.8
targetCompatibility = 1.8

subprojects {
    apply plugin: 'java'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
}

project(":desktop") {
    apply plugin: "kotlin"

    dependencies {
        implementation project(":core")
        api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
        api "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
    }
}

project(":core") {
    apply plugin: "kotlin"

    dependencies {
        api "com.badlogicgames.gdx:gdx:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        api "com.kotcrab.vis:vis-ui:1.3.0"
        api "com.github.czyzby:gdx-kiwi:1.9.1.9.6"
        api "net.dermetfan.libgdx-utils:libgdx-utils:0.13.4"
        api "com.badlogicgames.ashley:ashley:$ashleyVersion"
        api "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"

        compile "com.kotcrab.vis:vis-ui:$visuiVersion"

    }
}

Но по какой-то причине я все еще получаю сборку Gradle ошибка:

...\VolumeFlux.java:79: error: lambda expressions are not supported in -source 7
                stockButtons.forEach(b -> {
                                       ^
  (use -source 8 or higher to enable lambda expressions)

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Мне пришлось установить sourceCompatibility = 1.8 в настройках build.gradle подпроекта, а не в root build.gradle.

0 голосов
/ 16 января 2020

Я недавно преодолел неверную проблему источника / цели, описанную выше, с помощью этой настройки gradle. Глядя на опубликованный файл сборки, я не могу понять, почему это происходит, все кажется правильным.

Я публикую схему своей установки, в которой разрешена неверная совместимость источника / цели

верхнего уровня build.gradle

plugins {
id 'base'
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.3.61'  apply false
......
// note apply false
}

allprojects {
group = ".."
version = ".."
repositories {
    mavenCentral()
    jcenter()
    ...
}
ext {
    ...
  }
}

subprojects {
  // only apply plugins common to all subprojects here
  apply  plugin: "org.beryx.runtime"
  apply  plugin: "com.google.protobuf"
  sourceCompatibility = 11
  targetCompatibility = 11
  // only declare dependencies common to all subprojects here
  dependencies {
    testCompile 'org.junit.jupiter:junit-jupiter-api:5.4.2'
    testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
   }
 }

каждый подпроект будет иметь build.gradle где вы применяете плагины, которые необходимы и объявлены в файле компоновки верхнего уровня

plugins {
// applied from top level build
id 'java'
id 'application'
id 'org.jetbrains.kotlin.jvm'
.....
}  

dependencies {
// dependencies here that are unique to the subproject
}

относительно изначально проблемы, я объявил совместимость источника / цели в файле компоновки подпроекта и столкнулся с проблемой совместимости , Это было решено, когда я переместил его в блок закрытия подпроектов в файле верхнего уровня.

Обратите внимание, что @ BAR использует project(":core") {} правильно см. Пример 2 здесь . Когда вы используете эту форму, вам не нужен build.gradle в подпроекте, но, возможно, это приводит к intellij / gradle snafu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...