Should we have an org.gradle.api.tasks.compile.JavaCompile task type for the 1.0 API?
When folks code withType(JavaCompile) it would be clearer than withType(Compile)? One has to know from experience that Compile is Java related.
I see that [compileJava].options.encoding via NamedDomainObjectCollection corresponds to tasks.withType(Compile) { it.options.encoding }, while [compileGroovy].options.encoding corresponds to tasks.withType(GroovyCompiile) { it.options.encoding } which is good. (I know about [compileGroovy].groovyOptions.encoding as well )
This would involve: 1) Copying the org.gradle.api.tasks.compile.Compile and org.gradle.api.tasks.compile.JavaCompile 2) Making org.gradle.api.tasks.compile.Compile extend from org.gradle.api.tasks.compile.JavaCompile 3) Refactor org.gradle.api.tasks.compile.Compile in codebase to use org.gradle.api.tasks.compile.JavaCompile instead (since folks will copy plugins) 3) Possibly deprecating org.gradle.api.tasks.compile.Compile, so but hopefully now generating deprecation warnings in the build. 4) Updating documentation and example code to use and promote the use of org.gradle.api.tasks.compile.JavaCompile.
It will save many converstations on ambiguity in the future with multiple languages being supported.