Оказывается, я могу.Я напечатал этот вопрос, а затем провел небольшое исследование.Единственное предостережение в том, что вы НЕ МОЖЕТЕ использовать какие-либо высокоуровневые дополнения Java.
Используя Gradle, я включил переменную в свой оператор run, аналогично этому gradle clean assemble -PjavaVer=8
Используя эту переменную, яв основном может отключить код, который я хотел бы запустить.См. Пример ниже.
if(project.hasProperty('javaVer') && javaVer == '8') {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
afterEvaluate {
repositories {
mavenCentral()
jcenter()
flatDir {
dirs 'lib'
}
}
compileJava {
if (project.hasProperty(('javaVer')) && javaVer == '8') {
excludes = ['**/module-info.java']
} else {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
}
}
Это обнаружит, установлена ли переменная на 8
, и если это так, исключая класс module-info.java
, и установит sourceCompatibility
и targetCompatibility
на 1.8
,Это сработало для меня.
Пожалуйста, имейте в виду, что вы НЕ МОЖЕТЕ делать этого, если используете специальный код Java 10 или 9, например, var
для Java 10. Именно поэтому нам пришлось исключить класс module-info.java
, поскольку он был представлен в Java 9.
Надеюсь, это поможет кому-то еще.