Я недавно преодолел неверную проблему источника / цели, описанную выше, с помощью этой настройки 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