I would have expected this to work:

apply plugin: "java"

repositories {
    mavenCentral()
}

dependencies {
    compile 'junit:junit:4.9'
}

task doIt {
    dependsOn configurations.compile
    doFirst {
assert configurations.compile.state == Configuration.State.RESOLVED
    }
}


Instead it fails because the configuration is not resolved when the task executes.

Using `dependsOn configurations.compile.buildDependencies` does not work either, same problem.

I also tried `dependsOn configurations.compile.files`, which does trigger a resolve but then explodes because it tries to find a task with a name matching the absolute path of each dependency file.

I stumbled upon this when answering a forum question that lead to me writing and trying the following:

task unpack(type: Copy, dependsOn: configurations.compile) { task ->
    into "sdks"
        assert configurations.compile.state == Configuration.State.UNRESOLVED
configurations.compile.incoming.afterResolve { ResolvableDependencies incoming ->
        incoming.files.each { File file ->
            if (file.name.endsWith(".zip")) {
                from (zipTree(file)) {
                    into file.name - ".zip"
                }
            }
        }
    }
}

(I also discovered http://issues.gradle.org/browse/GRADLE-2047 in the process which is now fixed.)

--
Luke Daley
Principal Engineer, Gradleware
http://gradleware.com

Reply via email to