« Return to Thread: growl notification plugin

Re: growl notification plugin

by RenŽé Gröschke :: Rate this Message:

Reply to Author | View in Thread

Hello,
first of all thanks to have a look at the code and for your suggestions.

Am 26.08.2009 um 01:21 schrieb Adam Murdoch:

>
>
> Rene Groeschke wrote:
>>
>> Am 21.08.2009 um 09:12 schrieb Hans Dockter:
>>
>>>
>>> On Jun 23, 2009, at 9:48 PM, Rene Groeschke wrote:
>>>
>>>> Hello list,
>>>> some weeks ago there was a discussion going on about notification  
>>>> tasks that make use of twitter, growl, email etc. I've added a  
>>>> notification plugin to my build, that actually uses Growl for  
>>>> notifications. I rewrote the notification part in my build logic  
>>>> for easy reuse. you can reuse it if you want. I've tested it with  
>>>> the actual gradle trunk.
>>>>
>>>> I've just created a git repo at github.com. have a deeper look at http://github.com/breskeby/gradle-notify-plugin/tree/master 
>>>>  .
>>>>
>>>> Actually the growl implementation is hard coded in the notify  
>>>> plugin. The notify implementation(s) should definitely be more  
>>>> decoupled. The sources contains some dirty code fragments and  
>>>> contain no tests yet :-(. I hope to find time to add other  
>>>> notification implementations soon.
>>>>
>>>> Comments, suggestions, ideas are appreciated!
>>>
>>> So far I had unfortunately no time to give this a try. I hope we  
>>> have a plugin ecosystem infrastructure running within the next two  
>>> months. This would make it much easier to give new plugins a try  
>>> and of course to use non-core plugins in general.
>>
>> I've just updated the code to work with 0.7. BTW. I  reorganized my  
>> github repos and moved this plugin to
>>
>> http://github.com/breskeby/gradleplugins/tree/master
>>
>> which is a fork of Gregory Boissinots "gradleplugins" repo.
>> Furthermore you can find an ExampleProject in src/samples for easy  
>> testing. As you can see in the build.gradle of the ExampleProject  
>> it is actually a lot of overhead to use a thirdparty plugin. I'm  
>> really looking forward to that plugin ecosystem infrastructure you  
>> mentioned.
>
> I count 15 lines of overhead. I think we can make some improvements  
> right now to simplify this, which don't need any infrastructure, and  
> which benefit other groups of people who share plugins (eg  
> enterprise plugins shared by multiple projects).
>
> Let's have a look. The first chunk of overhead declares where to  
> find the artifacts:
>
> import org.apache.ivy.plugins.resolver.*
>
> buildscript {
>   repositories {
>       add(new URLResolver()) {
>           name = 'breskeby-Repo'
>           addArtifactPattern('http://breskeby.com/repo/[module](/
> [branch])/[type]s/[artifact]-[revision](-[classifier])(.[ext])')
>       }
>   }
> }
>
>
> A convenience method similar to flatDir() which takes an artifact  
> pattern would reduce this to:
>
> buildscript {
>   repositories {
>       url(name: 'nnn', artifactPattern: 'http://....')
>   }
> }
>
> This also simplifies the build script for those builds which use a  
> shared repository to share artifacts between builds.
>
> If we had a plugin repository somewhere, we could simplify this a  
> little more:
>
> buildscript {
>   repositories {
>       gradlePlugins()
>   }
> }
>
> And if we made it the default buildscript repository (along with  
> maven central for the transitive dependencies), then this could  
> disappear altogether.
>
> The other chunk of overhead declares the plugin to be used:
>
> import com.breskeby.gradle.notification.NotificationPlugin;
> usePlugin(com.breskeby.gradle.notification.NotificationPlugin)
>
> buildscript {
>   ...
>   dependencies {
>       classpath ":growl-api:0.1"
>       classpath ':growlPlugin:1.0'
>   }
> }
>
> I assume that 'growl-api' is actually a transitive dependency of  
> 'growlPlugin', and should be moved to it's runtime configuration. We  
> can also get rid of the import statement, as the fully qualified  
> classname is passed to the usePlugin() method.

You're right, in this case 'growl-api' is a transitive dependency  
needed at runtime. but I have a question to that: Where should the  
runtime configuration (including the dependency to ':growl-api:0.1')  
for a plugin be defined, respectively stored?


regards,
René


-----------------------------------
René Gröschke
rene@...
http://www.breskeby.com





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

    http://xircles.codehaus.org/manage_email


 « Return to Thread: growl notification plugin