Gradle・EclipseプラグインのplusConfiguration/minusConfigurations

GradleのEclipseプラグインにある、この2つのプロパティの意味が非常にわかりにくい。

EclipseClasspathにはこうある。

*plusConfigurations
The configurations whose files are to be added as classpath entries.
* minusConfigurations
The configurations whose files are to be excluded from the classpath entries.

デフォルト値

各デフォルト値は以下のようだ。

println plusConfiguration
[configuration ':compileClasspath', configuration ':runtimeClasspath', configuration ':testCompileClasspath', configuration ':testRuntimeClasspath']

println minusConfiguration
[]

plusConfigurationsへの設定

plusConfigurationsにはデフォルトとして上のようなコンフィギュレーションが設定されているので、これに追加しようとして以下のようにやってはいけない。

plusConfigurations = [project.configurations.XXXClasspath] 

これでは[project.configurations.XXXClasspath] のみになってしまう。正しくは以下とする。

plusConfigurations += [project.configurations.XXXClasspath] 

minusConfigurationsの意味

minusConfigurationsはplusConfigurationsで取得されたクラスパス用jarリストから、何らかを除去するためのものらしい。具体的に、これがある理由が不明なのだが、ともあれ、以下のようにすると、

minusConfigurations +=  [project.configurations.compileClasspath] 

※minusConfigurationsはデフォルトで空なので、以下でも同じ

minusConfigurations =  [project.configurations.compileClasspath] 

たしかに、compile(implementation)で指定されたライブラリjarが除去されtestCompile(testImplementation)のみになる。