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.