It would be nice to solve that indeed. I think I like the 'global' (however we call it) plugin applied to gradle object. It is more explicit and feels very natural.
Cheers! On Wed, Nov 16, 2011 at 10:46 AM, Luke Daley <[email protected]>wrote: > > On 16/11/2011, at 3:09 AM, Adam Murdoch wrote: > > With the build-announcements plugin, we have a plugin that: > * should only be applied once per build. > * needs to be usable from an init script > * needs to be usable early in the build, before we've loaded any projects. > > > We shouldn't use the term “global” plugin for this. To me, that term > conveys that it's going to be in every Gradle build I touch. There may be a > case for this type of plugin one day. I think what we have with the > announce plugin is a “build” plugin, or “build-wide” plugin (opposed to a > “project” plugin). > > > Which suggests that it should be applied to the Gradle instance, rather > than a particular project. That is, in an init script you'd do this: > > apply plugin: 'build-annoucements' > > And in a build script: > > gradle.apply plugin: 'build-announcements' > > or perhaps just: > > apply plugin: 'build-announcements' > > knows that this plugin's target is a Gradle instance and applies it to the > Gradle instance instead of the Project instance. > > Not sure what to do about configuration for this kind of plugin. If we > followed our current pattern, we'd use an extension on the 'gradle' object: > > // init.gradle > apply plugin: 'build-announcements' > > announcements { > sendTo growl > sendTo email { .... } > } > > // build.gradle > gradle.apply plugin: 'build-announcements' > > gradle.announcements { > .... > } > > It's a bit awkward having to use a different namespace in different > scripts. > > > I'm not sure the namespacing is a problem. To me it makes sense and > reflects the API of each point. > > > For this particular plugin, why can't it be a “project” plugin? Are we > sure that all subprojects in a large project will want the same > announcement configuration? > > -- > Luke Daley > Principal Engineer, Gradleware > http://gradleware.com > -- Szczepan Faber Principal engineer@gradleware Lead@mockito
