Gradle sourceCompatibility has no effect to subprojects Gradle sourceCompatibility has no effect to subprojects java java

Gradle sourceCompatibility has no effect to subprojects


It seems this behavior is caused by specifying the sourceCompatibility before apply plugin: 'java', which happens if you try to set the compatibility option inside allprojects.

In my setup, the situation can be solved by replacing:

allprojects {    sourceCompatibility = 1.6    targetCompatibility = 1.6}

with:

allprojects {    apply plugin: 'java'    sourceCompatibility = 1.6    targetCompatibility = 1.6}

Will be glad if anyone else can verify this in a different setup.

I am still not sure whether this should be reported as a bug but I believe this solution is better than the work-around mentioned above (which has been very helpful however).


Symptoms indicate that somewhere somebody is overwriting project.sourceCompatibility. But given that there are many ways to customize Gradle, I can't say from a distance who that is.

As a workaround, you can set the properties on the task level, which is what ultimately counts:

tasks.withType(JavaCompile) {     sourceCompatibility = "1.6"    targetCompatibility = "1.6" }

Add this to allProjects { ... } block.


You need to define compileJava tasks in build.gradle file, if you are using sourceCompatibility or targetCompatibility. Without compileJava tasks, both compatibility variables are displayed as unused variables in Intellij. I am using Gradle version 2.10.