Gradle中有两个属性,我也是一知半解。今天正好要练习下Java10,那就先把这两个属性的问题测试透了再说。那就是sourceCompatibilitytargetCompatibility
简单的说,sourceCompatibility属性跟编译环境有关,而targetCompatibility属性跟运行环境有关。
至少有这么几个原则,是不能违背的:

  1. sourceCompatibility关系到你使用到的Java语法特性及库
  2. sourceCompatibility不能比targetCompatibility
  3. targetCompatibility不能比目标客户端运行环境的JavaVersion
  4. targetCompatibility不能比当前Gradle使用的JavaVersion

总结起来就是这样

代码用的语言特性对应的JavaVersion 
sourceCompatibility
targetCompatibility
≦ Gradle使用的JavaVersion
≦ 客户端环境的JavaVersion