blob: 6b9a028c949fb0fc126414ac6fd38c0d0c85f4e5 [file] [log] [blame]
import groovy.swing.SwingBuilder
plugins {
id 'maven-publish'
id 'signing'
id 'org.apache.groovy-publish-validation'
id 'org.apache.groovy-artifactory'
}
def componentName
if (pluginManager.hasPlugin('java-platform')) {
componentName = 'javaPlatform'
} else if (pluginManager.hasPlugin('org.apache.groovy-distribution')) {
componentName = 'groovyDistribution'
} else {
componentName = 'groovyLibrary'
}
publishing {
repositories {
maven {
name "LocalFile"
url "${rootProject.buildDir}/repo"
}
maven {
name "Apache"
url findProperty('groovyVersion').contains('SNAPSHOT')
? 'https://repository.apache.org/content/repositories/snapshots'
: 'https://repository.apache.org/service/local/staging/deploy/maven2'
credentials {
username findProperty('groovyVersion').contains('SNAPSHOT') ? findProperty('asfNexusUsername') : findProperty('apacheUser')
password findProperty('groovyVersion').contains('SNAPSHOT') ? findProperty('asfNexusPassword') : findProperty('apachePassword')
}
}
}
publications {
maven(MavenPublication) {
from components[componentName]
suppressAllPomMetadataWarnings()
pom {
name = 'Apache Groovy'
description = 'Groovy: A powerful multi-faceted language for the JVM'
url = 'https://groovy-lang.org'
inceptionYear = '2003'
organization {
name = 'Apache Software Foundation'
url = 'https://apache.org'
}
developers {
developer {
id = 'glaforge'
name = 'Guillaume Laforge'
organization = 'Google'
roles.add 'Developer'
}
developer {
id = 'bob'
name = 'bob mcwhirter'
email = 'bob@werken.com'
organization = 'The Werken Company'
roles.add 'Founder'
}
developer {
id = 'jstrachan'
name = 'James Strachan'
email = 'james@coredevelopers.com'
organization = 'Core Developers Network'
roles.add 'Founder'
}
developer {
id = 'joe'
name = 'Joe Walnes'
organization = 'ThoughtWorks'
roles.add 'Developer Emeritus'
}
developer {
id = 'skizz'
name = 'Chris Stevenson'
organization = 'ThoughtWorks'
roles.add 'Developer Emeritus'
}
developer {
id = 'jamiemc'
name = 'Jamie McCrindle'
organization = 'Three'
roles.add 'Developer Emeritus'
}
developer {
id = 'mattf'
name = 'Matt Foemmel'
organization = 'ThoughtWorks'
roles.add 'Developer Emeritus'
}
developer {
id = 'alextkachman'
name = 'Alex Tkachman'
roles.add 'Developer Emeritus'
}
developer {
id = 'roshandawrani'
name = 'Roshan Dawrani'
roles.add 'Developer Emeritus'
}
developer {
id = 'spullara'
name = 'Sam Pullara'
email = 'sam@sampullara.com'
roles.add 'Developer Emeritus'
}
developer {
id = 'kasper'
name = 'Kasper Nielsen'
roles.add 'Developer Emeritus'
}
developer {
id = 'travis'
name = 'Travis Kay'
roles.add 'Developer Emeritus'
}
developer {
id = 'zohar'
name = 'Zohar Melamed'
roles.add 'Developer Emeritus'
}
developer {
id = 'jwilson'
name = 'John Wilson'
email = 'tug@wilson.co.uk'
organization = 'The Wilson Partnership'
roles.add 'Developer Emeritus'
}
developer {
id = 'cpoirier'
name = 'Chris Poirier'
email = 'cpoirier@dreaming.org'
roles.add 'Developer Emeritus'
}
developer {
id = 'ckl'
name = 'Christiaan ten Klooster'
email = 'ckl@dacelo.nl'
organization = 'Dacelo WebDevelopment'
roles.add 'Developer Emeritus'
}
developer {
id = 'goetze'
name = 'Steve Goetze'
email = 'goetze@dovetail.com'
organization = 'Dovetailed Technologies, LLC'
roles.add 'Developer Emeritus'
}
developer {
id = 'bran'
name = 'Bing Ran'
email = 'b55r@sina.com'
organization = 'Leadingcare'
roles.add 'Developer Emeritus'
}
developer {
id = 'jez'
name = 'Jeremy Rayner'
email = 'jeremy.rayner@gmail.com'
organization = 'javanicus'
roles.add 'Developer Emeritus'
}
developer {
id = 'jstump'
name = 'John Stump'
email = 'johnstump2@yahoo.com'
roles.add 'Developer Emeritus'
}
developer {
id = 'blackdrag'
name = 'Jochen Theodorou'
email = 'blackdrag@gmx.org'
roles.add 'Developer'
}
developer {
id = 'russel'
name = 'Russel Winder'
email = 'russel@winder.org.uk'
organization = 'Concertant LLP & It\'z Interactive Ltd'
roles.add 'Developer'
roles.add 'Founder of Gant'
}
developer {
id = 'phk'
name = 'Pilho Kim'
email = 'phkim@cluecom.co.kr'
roles.add 'Developer Emeritus'
}
developer {
id = 'cstein'
name = 'Christian Stein'
email = 'sormuras@gmx.de'
organization = 'CTSR.de'
roles.add 'Developer Emeritus'
}
developer {
id = 'mittie'
name = 'Dierk Koenig'
organization = 'Karakun AG'
roles.add 'Developer'
}
developer {
id = 'paulk'
name = 'Paul King'
email = 'paulk@asert.com.au'
organization = 'OCI, Australia'
roles.add 'Project Manager'
roles.add 'Developer'
}
developer {
id = 'galleon'
name = 'Guillaume Alleon'
email = 'guillaume.alleon@gmail.com'
roles.add 'Developer Emeritus'
}
developer {
id = 'user57'
name = 'Jason Dillon'
email = 'jason@planet57.com'
roles.add 'Developer Emeritus'
}
developer {
id = 'shemnon'
name = 'Danno Ferrin'
roles.add 'Developer Emeritus'
}
developer {
id = 'jwill'
name = 'James Williams'
roles.add 'Developer Emeritus'
}
developer {
id = 'timyates'
name = 'Tim Yates'
roles.add 'Developer'
}
developer {
id = 'aalmiray'
name = 'Andres Almiray'
email = 'aalmiray@users.sourceforge.net'
roles.add 'Developer'
}
developer {
id = 'mguillem'
name = 'Marc Guillemot'
email = 'mguillemot@yahoo.fr'
roles.add 'Developer Emeritus'
}
developer {
id = 'jimwhite'
name = 'Jim White'
email = 'jim@pagesmiths.com'
organization = 'IFCX.org'
roles.add 'Developer'
}
developer {
id = 'pniederw'
name = 'Peter Niederwieser'
email = 'pniederw@gmail.com'
roles.add 'Developer Emeritus'
}
developer {
id = 'andresteingress'
name = 'Andre Steingress'
roles.add 'Developer'
}
developer {
id = 'hamletdrc'
name = 'Hamlet D\'Arcy'
email = 'hamletdrc@gmail.com'
roles.add 'Developer Emeritus'
}
developer {
id = 'melix'
name = 'Cedric Champeau'
email = 'cedric.champeau@gmail.com'
roles.add 'Developer'
}
developer {
id = 'pascalschumacher'
name = 'Pascal Schumacher'
roles.add 'Developer'
}
developer {
id = 'sunlan'
name = 'Daniel Sun'
roles.add 'Developer'
}
developer {
id = 'rpopma'
name = 'Remko Popma'
roles.add 'Developer'
}
developer {
id = 'grocher'
name = 'Graeme Rocher'
roles.add 'Developer'
}
developer {
id = 'emilles'
name = 'Eric Milles'
organization = 'Thomson Reuters'
roles.add 'Developer'
}
}
contributors {
contributor {
name = 'Joern Eyrich'
}
contributor {
name = 'Robert Kuzelj'
}
contributor {
name = 'Rod Cope'
}
contributor {
name = 'Yuri Schimke'
}
contributor {
name = 'James Birchfield'
}
contributor {
name = 'Robert Fuller'
}
contributor {
name = 'Sergey Udovenko'
}
contributor {
name = 'Hallvard Traetteberg'
}
contributor {
name = 'Peter Reilly'
}
contributor {
name = 'Brian McCallister'
}
contributor {
name = 'Richard Monson-Haefel'
}
contributor {
name = 'Brian Larson'
}
contributor {
name = 'Artur Biesiadowski'
email = 'abies@pg.gda.pl'
}
contributor {
name = 'Ivan Z. Ganza'
}
contributor {
name = 'Larry Jacobson'
}
contributor {
name = 'Jake Gage'
}
contributor {
name = 'Arjun Nayyar'
}
contributor {
name = 'Masato Nagai'
}
contributor {
name = 'Mark Chu-Carroll'
}
contributor {
name = 'Mark Turansky'
}
contributor {
name = 'Jean-Louis Berliet'
}
contributor {
name = 'Graham Miller'
}
contributor {
name = 'Marc Palmer'
}
contributor {
name = 'Tugdual Grall'
}
contributor {
name = 'Edwin Tellman'
}
contributor {
name = 'Evan "Hippy" Slatis'
}
contributor {
name = 'Mike Dillon'
}
contributor {
name = 'Bernhard Huber'
}
contributor {
name = 'Yasuharu Nakano'
}
contributor {
name = 'Marc DeXeT'
}
contributor {
name = 'Dejan Bosanac'
email = 'dejan@nighttale.net'
}
contributor {
name = 'Denver Dino'
}
contributor {
name = 'Ted Naleid'
}
contributor {
name = 'Ted Leung'
}
contributor {
name = 'Merrick Schincariol'
}
contributor {
name = 'Chanwit Kaewkasi'
}
contributor {
name = 'Stefan Matthias Aust'
}
contributor {
name = 'Andy Dwelly'
}
contributor {
name = 'Philip Milne'
}
contributor {
name = 'Tiago Fernandez'
}
contributor {
name = 'Steve Button'
}
contributor {
name = 'Joachim Baumann'
}
contributor {
name = 'Jochen Eddel+'
}
contributor {
name = 'Ilinca V. Hallberg'
}
contributor {
name = 'Björn Westlin'
}
contributor {
name = 'Andrew Glover'
}
contributor {
name = 'Brad Long'
}
contributor {
name = 'John Bito'
}
contributor {
name = 'Jim Jagielski'
}
contributor {
name = 'Rodolfo Velasco'
}
contributor {
name = 'John Hurst'
}
contributor {
name = 'Merlyn Albery-Speyer'
}
contributor {
name = 'jeremi Joslin'
}
contributor {
name = 'UEHARA Junji'
}
contributor {
name = 'NAKANO Yasuharu'
}
contributor {
name = 'Dinko Srkoc'
}
contributor {
name = 'Raffaele Cigni'
}
contributor {
name = 'Alberto Vilches Raton'
}
contributor {
name = 'Paulo Poiati'
}
contributor {
name = 'Alexander Klein'
}
contributor {
name = 'Adam Murdoch'
}
contributor {
name = 'David Durham'
}
contributor {
name = 'Daniel Henrique Alves Lima'
}
contributor {
name = 'John Wagenleitner'
}
contributor {
name = 'Colin Harrington'
}
contributor {
name = 'Brian Alexander'
}
contributor {
name = 'Jan Weitz'
}
contributor {
name = 'Chris K Wensel'
}
contributor {
name = 'David Sutherland'
}
contributor {
name = 'Mattias Reichel'
}
contributor {
name = 'David Lee'
}
contributor {
name = 'Sergei Egorov'
}
contributor {
name = 'Hein Meling'
}
contributor {
name = 'Michael Baehr'
}
contributor {
name = 'Craig Andrews'
}
contributor {
name = 'Peter Ledbrook'
}
contributor {
name = 'Scott Stirling'
}
contributor {
name = 'Thibault Kruse'
}
contributor {
name = 'Tim Tiemens'
}
contributor {
name = 'Mike Spille'
}
contributor {
name = 'Nikolay Chugunov'
}
contributor {
name = 'Francesco Durbin'
}
contributor {
name = 'Paolo Di Tommaso'
}
contributor {
name = 'Rene Scheibe'
}
contributor {
name = 'Matias Bjarland'
}
contributor {
name = 'Tomasz Bujok'
}
contributor {
name = 'Richard Hightower'
}
contributor {
name = 'Andrey Bloschetsov'
}
contributor {
name = 'Yu Kobayashi'
}
contributor {
name = 'Nick Grealy'
}
contributor {
name = 'Vaclav Pech'
}
contributor {
name = 'Chuck Tassoni'
}
contributor {
name = 'Steven Devijver'
}
contributor {
name = 'Ben Manes'
}
contributor {
name = 'Troy Heninger'
}
contributor {
name = 'Andrew Eisenberg'
}
contributor {
name = 'Eric Milles'
}
contributor {
name = 'Kohsuke Kawaguchi'
}
contributor {
name = 'Scott Vlaminck'
}
contributor {
name = 'Hjalmar Ekengren'
}
contributor {
name = 'Rafael Luque'
}
contributor {
name = 'Joachim Heldmann'
}
contributor {
name = 'dgouyette'
}
contributor {
name = 'Marcin Grzejszczak'
}
contributor {
name = 'Pap LÅ‘rinc'
}
contributor {
name = 'Guillaume Balaine'
}
contributor {
name = 'Santhosh Kumar T'
}
contributor {
name = 'Alan Green'
}
contributor {
name = 'Marty Saxton'
}
contributor {
name = 'Marcel Overdijk'
}
contributor {
name = 'Jonathan Carlson'
}
contributor {
name = 'Thomas Heller'
}
contributor {
name = 'John Stump'
}
contributor {
name = 'Ivan Ganza'
}
contributor {
name = 'Alex Popescu'
}
contributor {
name = 'Martin Kempf'
}
contributor {
name = 'Martin Ghados'
}
contributor {
name = 'Martin Stockhammer'
}
contributor {
name = 'Martin C. Martin'
}
contributor {
name = 'Alexey Verkhovsky'
}
contributor {
name = 'Alberto Mijares'
}
contributor {
name = 'Matthias Cullmann'
}
contributor {
name = 'Tomek Bujok'
}
contributor {
name = 'Stephane Landelle'
}
contributor {
name = 'Stephane Maldini'
}
contributor {
name = 'Mark Volkmann'
}
contributor {
name = 'Andrew Taylor'
}
contributor {
name = 'Vladimir Vivien'
}
contributor {
name = 'Vladimir Orany'
}
contributor {
name = 'Joe Wolf'
}
contributor {
name = 'Kent Inge Fagerland Simonsen'
}
contributor {
name = 'Tom Nichols'
}
contributor {
name = 'Ingo Hoffmann'
}
contributor {
name = 'Sergii Bondarenko'
}
contributor {
name = 'mgroovy'
}
contributor {
name = 'Dominik Przybysz'
}
contributor {
name = 'Jason Thomas'
}
contributor {
name = 'Trygve Amundsens'
}
contributor {
name = 'Morgan Hankins'
}
contributor {
name = 'Shruti Gupta'
}
contributor {
name = 'Ben Yu'
}
contributor {
name = 'Dejan Bosanac'
}
contributor {
name = 'Lidia Donajczyk-Lipinska'
}
contributor {
name = 'Peter Gromov'
}
contributor {
name = 'Johannes Link'
}
contributor {
name = 'Chris Reeves'
}
contributor {
name = 'Sean Timm'
}
contributor {
name = 'Dmitry Vyazelenko'
}
}
mailingLists {
mailingList {
name = 'Groovy Developer List'
archive = 'https://mail-archives.apache.org/mod_mbox/groovy-dev/'
}
mailingList {
name = 'Groovy User List'
archive = 'https://mail-archives.apache.org/mod_mbox/groovy-users/'
}
}
licenses {
license {
name = 'The Apache Software License, Version 2.0'
url = 'https://www.apache.org/licenses/LICENSE-2.0.txt'
distribution = 'repo'
}
}
issueManagement {
system = 'jira'
url = 'https://issues.apache.org/jira/browse/GROOVY'
}
scm {
connection = 'scm:git:https://github.com/apache/groovy.git'
developerConnection = 'scm:git:https://github.com/apache/groovy.git'
url = 'https://github.com/apache/groovy.git'
}
}
}
}
}
signing {
required {
sharedConfiguration.signing.shouldSign(gradle.taskGraph)
}
sign publishing.publications.maven
if (sharedConfiguration.signing.useGpgCmd.get()) {
useGpgCmd()
}
}
gradle.taskGraph.whenReady { taskGraph ->
if (sharedConfiguration.signing.shouldSign(gradle.taskGraph)) {
// Use Java 6's console or Swing to read input (not suitable for CI)
if (!sharedConfiguration.signing.hasAllKeyDetails()) {
printf "\n\nWe have to sign some things in this build." +
"\n\nPlease enter your signing details.\n\n"
System.out.flush()
if (!sharedConfiguration.signing.keyId.present) {
sharedConfiguration.signing.keyId.set promptUser('PGP Key Id')
}
if (!sharedConfiguration.signing.secretKeyRingFile.present) {
sharedConfiguration.signing.secretKeyRingFile.set promptUser('PGP Secret Key Ring File (absolute path)')
}
if (!sharedConfiguration.signing.password.present) {
sharedConfiguration.signing.password.set promptUser('PGP Private Key Password')
}
allprojects {
project.properties.put("signing.keyId", sharedConfiguration.signing.keyId.get())
project.properties.put("signing.secretKeyRingFile", sharedConfiguration.signing.secretKeyRingFile.get())
project.properties.put("signing.password", sharedConfiguration.signing.password.get())
}
printf "\nThanks.\n\n"
System.out.flush()
}
}
}
def promptUser(String prompt) {
def response = ''
if (System.console() == null) {
new SwingBuilder().edt {
dialog(modal: true, // pause build
title: 'Response required', // dialog title
alwaysOnTop: true,
resizable: false,
locationRelativeTo: null, // centered on screen
pack: true,
show: true
) {
vbox {
label(text: "$prompt:")
input = passwordField()
button(defaultButton: true, text: 'OK', actionPerformed: {
response = new String(input.password)
dispose()
})
}
}
}
} else {
response = new String(System.console().readPassword("\n$prompt: "))
}
if (!response) {
throw new InvalidUserDataException("Null response detected!")
}
response
}