open-source Java library project
,为此,我希望构建的构件尽可能长时间地保持与Java8的兼容性。
我最近收到了
pull request
,添加
module-info.java
Gradle documentation
,我已经重新处理了
build.gradle
看起来像这样:
sourceCompatibility = 1.9
targetCompatibility = 1.8
ext.moduleName = 'vault.java.driver'
compileJava {
inputs.property("moduleName", moduleName)
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
compileTestJava {
inputs.property("moduleName", moduleName)
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'junit',
'--add-reads', "$moduleName=junit",
'--patch-module', "$moduleName=" + files(sourceSets.test.java.srcDirs).asPath,
]
classpath = files()
}
}
这很好,但我注意到格雷德和IntelliJ之间有一些严重的混淆。
很好,因为当我临时设置时,它会将语言级别更改为8
sourceCompatibility=1.8
并刷新。
但是,当我从“构建”下拉菜单中单击“构建项目”时,我得到错误:
Error:(1, 1) java: modules are not supported in -source 8
(use -source 9 or higher to enable modules)
./gradlew build
sourceCompatibility
或
targetCompatability
* What went wrong:
Execution failed for task ':compileJava'.
> invalid source release: 1.9
我真的很困惑。如何创建一个
生成.gradle
文件,这两个文件:
-
允许Java 9+,
-
同时仍然保持构建的工件与Java8的兼容性,以及
-