如何在Java模块中指定源和目标兼容性?

时间:2016-12-07 12:30:18

标签: gradle android-gradle build.gradle

我有一个包含Android模块的Gradle项目(com.android.library文件中应用了build.gradle插件)和一个Java模块(java插件应用于{{ 1}}文件)。在Java模块的build.gradle文件中,我之前指定了源和目标兼容性,如下所示:

build.gradle

我刚刚更新了项目" Gradle的Android插件"和#34; Gradle Wrapper"版本到最新版本(分别为2.2.3和3.2.1),我现在在Java模块中看到警告如下:

apply plugin: 'java'

compileJava {
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
}

如果我将Access to 'sourceCompatibility' exceeds its access rights Access to 'targetCompatibility' exceeds its access rights sourceCompatibility声明移到模块targetCompatibility文件的根级,如下所示......

build.gradle

...然后我收到警告消息,告诉我没有使用分配。

在最新的Gradle版本中指定Java模块的源和目标兼容级别的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

需要在compileJava块

中指定兼容性
compileJava   {
  sourceCompatibility = '1.8'
  targetCompatibility = '1.8'
}

IntelliJ提供此警告

  

访问&source资源'超过其访问权限

如果您使用双参数。

当您将值设为字符串(例如引用)时,警告将消失。

- 编辑 -

仅在IntelliJ 2016中使用1.8显示警告。2017年,使用1.8'1.8'

警告消失

答案 1 :(得分:2)

我认为最后一个(根目录中的声明)是正确的,它必须正常工作,尽管它会在IDE中引发警告。它没有说,声明它的首选方式是什么,official docs中只有一个例子,它被用作:

sourceCompatibility = 1.6

build.gradle

的根目录中