On 18/04/2013, at 12:09 AM, Luke Daley <luke.da...@gradleware.com> wrote:

> http://forums.gradle.org/gradle/topics/reading_project_properties_triggers_configuration_of_any_deferredconfigurable_extensions
> 
> How do we want to deal with this?

There are several options:

1. Asking for project.properties triggers the configuration of all deferred 
objects (as it does now) and we add some stuff to make it easier to deal with 
this fact. For example, we may allow the configuration of a deferred object 
only when configuring some other deferred object (more or less what the 
workaround does) plus some reasonable error reporting when you break this rule.

2. Asking for project.properties does not trigger any configuration, but asking 
for a value from the map does. We add the same kinds of things as above.

3. Asking for project.properties returns a map with a placeholder object for 
those deferred objects that have not been configured.

4. Asking for project.properties returns a map that does not include any 
deferred objects that have not been configured.

5. Asking for project.properties does not trigger any configuration nor does 
asking for a value from the map, but touching the object in some way (accessing 
a property, calling a method) triggers the configuration.

I want to avoid #5 if possible, as the other options offer a stronger guarantee 
(if you've got the object, it's been configured) and I don't think we need the 
flexibility of #5. The other options also offer some interesting options wrt 
mutability, as the object you get post-configuration does not necessarily need 
to be the same object that the configuration logic runs against.

Anyway, we can start with #1 and incrementally move to #2 and then #5 in a 
relatively backwards-compatible way if we need to.


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com

Join us at the Gradle Summit 2013, June 13th and 14th in Santa Clara, CA: 
http://www.gradlesummit.com

Reply via email to