Extension DSL inheritance

You shouldn’t need to work around anything if you’re using the extension mechanism across the board for your plugin properties. The situation might be different if you were trying to code MyBasePlugin to react to what could be added to BaseExtension by MyFooPlugin, as opposed to MyFooPlugin being able to handle it.

Taking your original example, if I change the creation of FooExtension to

project.extensions.base.extensions.create('foo', FooExtension)

I can configure the FooExtension the same way as you did in build.gradle, but foo is no longer available outside the context of base { }.