On 26/02/2013, at 10:14 AM, Marcin Erdmann wrote: > Another slice of must run after stuff is available in my fork: > https://github.com/erdi/gradle/tree/always-runs-after > > Changes from the time last review was made: > - TaskDependencyGraph now differentiates between "soft" and "hard" > dependencies. Thanks to that all must run after dependencies are scheduled > before regular dependencies in execution plan. > - If a task B must run after task A and task A fails and failure handler > doesn't abort the execution then task B is still executed > - Edge ordering was moved to the graph and was implemented using TreeSets. > Ordering is natural and is inverted in DefaultTaskExecutionPlan using a > descending iterator. > - Execution plan is calculated starting from original tasks added to the > graph and tracking of nodes without incoming edges was removed. > - Number of node lookups was decreased by reusing node references in > DefaultTaskExecutionPlan. Code around adding edges and nodes to > TaskDependencyGraph was simplified. > - TaskDependencyGraphNode was merged into TaskInfo but I'm not sure if that > was the right direction. > - Execution plan calculation was deferred so it's performed only once per > execution. > - Must run after dependencies are evaluated lazily using TaskDependency.
This is excellent. Thank you again. > > Please let me know if I missed something otherwise I believe I should start > working on adding some documentation. I've added a few comments, but it's nothing that can't wait until after we've merged what you've already done. I think I'd like to merge it soon, once we've branched for the Gradle 1.5 release (should be in the next few days). We'll aim to include your changes in the 1.6 release. Something this deep in the core, I'd like to have it soak for a while in the master branch before we include it in a release. If you like, send us a pull request with what you have now. -- Adam Murdoch Gradle Co-founder http://www.gradle.org VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting http://www.gradleware.com
