Project lib dependencies

I have a multi-project gradle build using the java plugin as follows; rootProject/

settings.gradle

build.gradle

gradle.properties

util/

build.gradle

moduleA/

build.gradle

moduleB/

build.gradle

I would like util to generate two jars containing different sets of class files, say util_a.jar and util_b.jar. moduleA depends on util_a.jar. moduleB depends on both util_a.jar and util_b.jar.

settings.gradle looks like this inlucde ‘util’, ‘moduleA’, ‘moduleB’

rootProject/util/build.gradle looks like this dependencies { … }

task aJar (type: Jar, dependsOn classes) { … }

task bJar(type: Jar, dependesOn classes) { … }

configurations {

aConfig

bConfig }

artifacts {

aConfig aJar

bConfig bJar }

jar {

actions = []

dependsOn aJar, bJar }

rootProject/moduleA/build.gradle looks like this dependencies {

compile project(path: ':util", configuration: ‘aConfig’) }

rootProject/moduleB/build.gradle looks like this dependencies {

compile project(’:util’) }

When I tried to build moduleA, I got :util:compileJava :util:processResources :util:classes :util:aJar :util:bJar :util:jar :moduleA:compileJava…

moduleA actually failed on compileJava task because it couldn’t find class files which are supposed to be archived into util_a.jar. However, I did see both util_a.jar and util_b.jar being generated in \rootProject\util\build\libs just fine. Why can’t moduleA see them?

Also, since I specify moduleA’s compile dependency only on ‘aConfig’, why was util_b.jar being generated? I thought this would only trigger util_a.jar being generated.

moduleB also failed on compileJava task for the same reason. I guess I don’t understand project lib dependencies well enough. Any inputs are appreciated.