如何在Gradle中为多个项目配置多个gradle.properties文件?

use*_*599 9 java gradle build.gradle

我有多个项目并使用Gradle 2.4构建.

我想覆盖org.gradle.java.home每个项目中的参数,并尝试为每个项目添加gradle.properties文件并覆盖参数.

我已经设置了主gradle项目org.gradle.java.home=C:/Java/jdk1.6.0并在子项目中覆盖为org.gradle.java.home=C:/Java/jdk1.7.0_45

但它没有按预期工作,我得到了

无效的源代码版本:1.7

错误信息.

有人可以提出如何解决这个问题的想法吗?

Dan*_*ail 5

从我的测试:

我创建空白根项目没有指定的Java使用,包括两名子项目不同org.gradle.java.home,并sourceCompatibilitytargetCompatibility各子项目和它的作品。

项目结构

/build.gradle <-- root project (no sourceCompatibility or targetCompatibility here .. just blank)
/settings.gradle <-- include the subprojects
/gradle.properties <-- root gradle.properties (no org.gradle.java.home here)
  /sub1/build.gradle
  /sub1/gradle.properties
  /sub2/build.gradle
  /sub2/gradle.properties
Run Code Online (Sandbox Code Playgroud)

根的 settings.gradle

include 'sub1'
include 'sub2'
Run Code Online (Sandbox Code Playgroud)

Sub1 的 gradle.properties

org.gradle.java.home=/path/to/java8
Run Code Online (Sandbox Code Playgroud)

Sub1 的 build.gradle

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
Run Code Online (Sandbox Code Playgroud)

Sub2 的 gradle.properties

org.gradle.java.home=/path/to/java7
Run Code Online (Sandbox Code Playgroud)

Sub2 的 build.gradle

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
Run Code Online (Sandbox Code Playgroud)

所以,你可以试试这个设置。

我想,因为您正在使用已经定义的 java(不仅仅是作为配置点)的根项目 - 这可能是问题所在。

还要检查这些:

如何告诉 Gradle 使用特定的 JDK 版本?

Gradle sourceCompatibility 对子项目没有影响