You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为项目不同Source Set配置不同Java兼容性版本?

针对不同Source Set配置Java编译版本兼容性

嘿,这个场景我太熟悉了!要让main/java按Java 1.6编译、test/java用Java 1.8特性,你只需要移除全局的兼容性设置,然后分别给两个Source Set单独配置就行,不用再让全局设置同时影响测试代码。

方法一:直接针对编译任务配置

替换你当前的全局配置,改成下面这样:

// 删掉原来的 sourceCompatibility = '1.6' 和 targetCompatibility = '1.6'

compileJava {
    options.fork = true
    // 给main源码设置Java 1.6兼容性
    options.sourceCompatibility = '1.6'
    options.targetCompatibility = '1.6'
}

compileTestJava {
    // 给测试源码设置Java 1.8兼容性
    options.sourceCompatibility = '1.8'
    options.targetCompatibility = '1.8'
}

方法二:通过Source Sets统一配置

这种方式更清晰,把版本配置和源码目录绑定在一起:

sourceSets {
    main {
        java {
            sourceCompatibility = '1.6'
            targetCompatibility = '1.6'
        }
    }
    test {
        java {
            sourceCompatibility = '1.8'
            targetCompatibility = '1.8'
        }
    }
}

// 保留你原来的fork配置
compileJava {
    options.fork = true
}

两种方式都能达到效果:main/java的代码会严格按照Java 1.6标准编译,确保能在Android环境正常运行;而test/java的测试代码则可以尽情使用Java 1.8的所有特性,比如Lambda表达式、Stream API、Optional这些。

内容的提问来源于stack exchange,提问作者guenhter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:09:22