« Return to Thread: removing the settings.gradle file

Re: removing the settings.gradle file

by hdockter :: Rate this Message:

Reply to Author | View in Thread


On Jun 3, 2009, at 11:15 AM, Adam Murdoch wrote:

>>> I think we should do away with the processing stage which figures  
>>> out which projects are included in the build, and simply allow  
>>> them to be added at any point during the evaluation stage. That  
>>> is, projects are just regular domain objects, not anything  
>>> special. I think this consistency important. In addition, this  
>>> would mean you can use plugins or classes in buildSrc to define or  
>>> influence the project hierarchy without us doing anything special  
>>> to support it. The same would be true of any future capability we  
>>> add to let you compose the build logic. To me, this approach seems  
>>> more flexible and more likely to handle use-cases we haven't  
>>> anticipated, than would special-casing assembly of the project  
>>> hierarchy.
>>
>> I'm trying to understand the lifecycle we would have then. Let's  
>> say we have a non aggregate multi-project build. All subprojects  
>> are declared in the root project. During the evaluation phase of  
>> the root project we hit the projects closure. After a declaration  
>> of each subproject, we would create an empty project instance for  
>> this subproject. After the projects closure is evaluated the root  
>> project can configure the sub projects. After the root project is  
>> evaluated, the subprojects are evaluated (let's say by default in  
>> alphabetical order). The evaluation order can be customized by  
>> calling the subproject.evaluate() method or by creating a dependsOn  
>> relation (for example because subproject1 needs an evaluated  
>> subproject2).
>
> Pretty much. To add a little more detail:
>
> for projects { subproject { ... } }
>
> when subproject { ... } is executed:
>
> 1. create a project descriptor
> 2. execute the closure to configure the project descriptor
> 3. execute the project { } closure from the subproject's build file,  
> if present, to configure the project descriptor
> 4. use the project descriptor to create an empty project and add to  
> parent project
> 5. fire a project added notification
> 6. repeat this process for any projects nested in the configure  
> closure.
>
> Step 3 is possibly not needed. Also, we could skip a project  
> descriptor and create a project in step 1 instead.

Right. That would simplify things. We would expose the whole project  
API by that. But that would be a feature. And parts of the API which  
are not supposed to be used at that lifecycle phase can be shielded  
with an exception.

- Hans

--
Hans Dockter
Gradle Project Manager
http://www.gradle.org


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


 « Return to Thread: removing the settings.gradle file