如何为项目不同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
相关产品推荐
相关产品推荐

