Simplify IDEA scope mapping
The old scope mapping code was hardcoded, hard to understand and exploded in complexity
each time we added a new configuration to the Java plugin. It was doing this hardcoded
mapping in an attempt to minimize the number of dependency declarations in IDEA, e.g.
remove `testRuntime` dependencies from the `TEST` scope if they were already in the `RUNTIME`
scope and not present in `testCompile`. While this slightly reduces the number of false positives
in auto completion, it is hard to follow, as IDEA itself simply does not differentiate between
"test compilation" and "test runtime".
The new implementation accepts IDEA's dependency model and does the simples possible mapping to it:
- no hardcoded mapping rules for the Java plugin
- users can put dependencies into the 4 IDEA scopes (`COMPILE`,`PROVIDED`,`RUNTIME`, `TEST`)
- the IdeaPlugin uses the same API for adding dependencies that the user would use
- those scopes are not postprocessed in any way
The default mapping for the Java plugin is simplified to:
- `COMPILE` is empty
- `PROVIDED` = `compileClasspath`
- `RUNTIME` = `runtimeClasspath`
- `TEST`= `testCompileClasspath + testRuntimeClasspath`
The benefit of this mapping is that we no longer use `minus` configurations, which we might want
to deprecate/remove as well.
12 Jan 17 8cb2b1541438c951f59d1322014db4b7ade1aa95
Fix IDE generation for included builds
The 'jar' task for an included build is no longer executed when
generating the IDE metadata for a composite build. This fixes generation
for projects with dependency cycles.
18 Oct 16 b6443ec7040a6121a9377de79563a4d1f001a998