On 14.02.2012, at 19:06, Luke Daley wrote:

> 
> On 14/02/2012, at 2:24 PM, Joern Huxhorn wrote:
> 
>> The Release Notes at 
>> http://wiki.gradle.org/display/GRADLE/Gradle+1.0-milestone-8+Release+Notes 
>> contain the following example:
>> 
>> signing {
>> required = { gradle.taskGraph.hasTask("uploadArchives") && 
>> !version.endsWith("SNAPSHOT") }
>> }
> 
> I just fixed that up to make it a little clearer, thanks. The hasTask() 
> method requires an absolute path as you found out.
> 
>> This caused me quite a bit of confusion since in a multi-module project, the 
>> task contained in taskGraph is something like ':foo:uploadArchives' so the 
>> code above wouldn't work. (On a side note, I use the task uploadPublished 
>> instead of uploadArchives.)
>> 
>> The only way I could find to achieve something like the functionality 
>> intended above was
>> signing {
>> required = { gradle.taskGraph.allTasks.any { it instanceof Upload } && 
>> !version.endsWith("SNAPSHOT") }
>> }
>> 
>> Or am I missing something and there is a more elegant way?
> 
> That will not allow you to `gradle install` (the install task is an Upload 
> task) without signing which may not be what you want. Signing configuration 
> is per project, and hasTask() accepts task objects. So you could do…
> 
> signing {
> required = { gradle.taskGraph.hasTask(uploadPublished) && 
> !version.endsWith("SNAPSHOT") }
> }

I implemented it differently in the meantime
        signing {
                required = !version.endsWith('SNAPSHOT')
                sign configurations.archives
        }

and then, in the part of my build that is asking for the PW if necessary:

gradle.taskGraph.whenReady { taskGraph ->
        if(taskGraph.allTasks.any { it instanceof Sign } && 
!version.endsWith("SNAPSHOT")) {
                String pgpPassword = System.properties.'pgpPassword'
                if(!pgpPassword) {
                        Console console = System.console()
                        pgpPassword = new String(console.readPassword("\nPGP 
Private Key Password: "))
                }
                allprojects*.setProperty('signing.password', pgpPassword)
        }
}

That way I'll only get asked if a Sign task is actually contained in the 
taskGraph. Neat.

> 
> Actually… I think I'll update the cable to that.
> 
> Cheers.
> 

Thank you very much for your fast answer. Did I mention that I really love your 
support?

Cheers,
Joern.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to