On 21/09/2011, at 2:09 AM, Ryan J wrote:
> This is probably an easy question, but I can't seem to figure it out.
> Say I have a project with several child modules:
>
> parent
> |-- child1
> |-- child2
>
> I want to add slf4j-api as a dependency to all child modules:
>
> subprojects {
> dependencies {
> compile "org.slf4j:slf4j-api:1.6.1"
> }
> }
>
> However, when I try to add more dependencies to one of the child modules:
>
> project(':child1') {
> dependencies {
> compile "some other depends"
> }
> }
>
> .. I get the error:
>
>
> A problem occurred evaluating root project...
> Cause: You can't change a configuration which is not in unresolved state!
>
> How can I accomplish what I'm trying to do?
You do exactly what you're already doing. The problem is elsewhere:
When you query the files of a configuration, the configuration is resolved and
the result cached. From then on, you are not able to modify the configuration,
and any attempt to change it results in the error message you are seeing. So,
somewhere in your build script between adding the logging dependencies and
adding the project-specific dependencies, you are, perhaps unintentionally,
querying the files of the compile configuration, and so flicking it over to
unmodifiable mode.
Perhaps have a look for usages of configurations.compile. A common problem is
to mix up configuration time (when the build script executes) and execution
time (when the task executes), and to unintentionally have code that is
supposed to run at execution time, run at configuration time instead. For
example:
task show {
// runs at configuration time
configurations.compile.each { println it }
}
task show {
doLast {
// runs at execution time
configurations.compile.each { println it }
}
}
Another common problem:
copy {
// using .files queries the files immediately
from configurations.compile.files
}
instead of
copy {
// this defers querying until the task is executed
from configurations.compile
}
--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com