代码之家  ›  专栏  ›  技术社区  ›  Steve Perkins

如何设置targetCompatibility=1.8,sourceCompatibility=1.9或更高版本的IntelliJ/Gradle项目?

  •  1
  • Steve Perkins  · 技术社区  · 7 年前

    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的兼容性,以及
    0 回复  |  直到 7 年前
    推荐文章