如何让Gradle编译使用较新java版本的源库?

时间:2015-11-16 15:04:15

标签: java gradle build

我有一个为Java 7编译的gradle项目,我被告知由于后来的java版本中引入了一个错误,因此无法更新此项目以使用更新版本的Java。

我正在尝试让这个项目使用通过java 8编译的库,因此我在运行时遇到了一个重大的次要版本52冲突。

有没有办法让gradle尝试使用Java 7在兼容模式下编译这个库?

现在,为了让它构建,我在build.gradle中使用这一行:

sourceCompatibility = 1.7
targetCompatibility = 1.7

compile(group: 'com.blah.example', name: 'some-java-8-library', version: '1.0') {
    transitive = false
}

1 个答案:

答案 0 :(得分:1)

您遇到的问题不是Gradle问题,而是Java问题。如果您的原始库jar是使用targetCompatibility = 1.8构建的,那么将能够在Java7 JVM上使用它。您将看到版本冲突错误消息。

如果您有权访问库源,则可以尝试使用targetCompatibility = 1.7从源构建,然后使用生成的jar和Java7 JVM。

与早期版本的java不同,这里的复杂之处在于,如果将sourceCompatibility设置为1.8,java编译器将强制您使用targetCompatibility=1.8 - 这意味着,如果您的库源使用Lambda等任何1.8功能,您将无法编译到targetCompatibility = 1.7