Hey Adam, Thanks for the reply.
Done: http://jira.codehaus.org/browse/GRADLE-708 Steven ________________________________ De : Adam Murdoch <[email protected]> À : [email protected] Envoyé le : Ven 16 Octobre 2009, 8 h 38 min 41 s Objet : Re: [gradle-user] subprojects { } mixup? Steven Devijver wrote: > >> >Hey, > > >I'm using the latest Gradle HEAD and I'm experiencing an >unexpected behavior with the subprojects { } method: > > >subprojects { >if >(name.startsWith('spring-')) { > > >assert >name == "spring-core" >configurations >{ > >moduleJars >sources >archives >} > > >dependencies >{ >moduleJars >project('java14') >moduleJars >project('java15') >} >task >files << { >configurations.moduleJars.files.each >{ file -> println file.name } >} > > > >task moduleJar(type: Jar) { >destinationDir >= file('build/jar_for_module') >} >artifacts >{ >archives >moduleJar >} > >task >uploadArchives(type: Upload) { >dependsOn >moduleJar > >configuration = configurations.archives >repositories >{ > > flatDir(dirs: dist_dir) >} >} >moduleJar.doFirst >{ >assert >configurations.ivyService.ivyService.ivyService.metaDataProvider.module.name >== "spring-core" >for >(jar in configurations.moduleJars.files) { >moduleJar.merge(jar) >} >} >} >} > > >The second assert (the one in the moduleJar task) fails while >the first assert works. Is this as expected? I got the same result with >Gradle 0.8. This problem comes about whenever you have a closure inside subprojects { } which is not executed straight away. For example, the task action closures above do not execute until the task executes. By the time the task action closure executed, the delegate of the subprojects {} closure is no longer pointing to the task's project, instead it points to the last subproject. This means that property and method references in the closures will be executed against the last subproject, rather than the task's project. Could you add a JIRA issue for this problem? A work around is to do something like: moduleJar.doFirst { task -> for (jar in task.project.configurations.moduleJars.files) { .... } } > >I've added these asserts because configurations.moduleJars is >throwing an expection saying the moduleJars property is not found. > > >I've uploaded the entire project for download here: > > >http://3.ly/I7W > > > > >Thanks for your help > > >Steven > -- Adam Murdoch Gradle Developer http://www.gradle.org
