@@ -29,6 +29,7 @@ import org.gradle.api.Task
2929import org.gradle.api.file.CopySpec
3030import org.gradle.api.publish.PublishingExtension
3131import org.gradle.api.publish.maven.MavenArtifact
32+ import org.gradle.api.publish.maven.MavenPomDeveloper
3233import org.gradle.api.publish.maven.MavenPublication
3334import org.gradle.api.publish.maven.tasks.AbstractPublishToMaven
3435import org.gradle.api.tasks.TaskProvider
@@ -172,7 +173,6 @@ class PublishPlugin implements Plugin<Project> {
172173
173174 private static void configureGrailsPublish (Project project ) {
174175 project. extensions. configure(GrailsPublishExtension ) {
175- // Explicit `it` is required here
176176 it. artifactId. set(project. provider { lookupProperty(project, ' pomArtifactId' , project. name) })
177177 it. githubSlug. set(project. provider { lookupProperty(project, ' githubSlug' , ' apache/grails-core' )})
178178 it. license. name = ' Apache-2.0'
@@ -182,7 +182,7 @@ class PublishPlugin implements Plugin<Project> {
182182 it. name. set(' Apache Software Foundation' )
183183 it. url. set(' https://apache.org/' )
184184 }
185- it. developers. set(project . provider { lookupProperty (project, ' pomDevelopers ' , determineDevelopers(project))} )
185+ it. developers. set(createDeveloperList (project) )
186186 it. pomCustomization. set(project. provider { lookupProperty(project, ' pomCustomization' ) as Closure })
187187 it. publishTestSources. set(project. provider { lookupProperty(project, ' pomPublishTestSources' , false )})
188188 it. testRepositoryPath. set(project. provider { shouldSkipJavaComponent(project) ? null : findRootGrailsCoreDir(project). dir(' build/local-maven' )})
@@ -191,6 +191,155 @@ class PublishPlugin implements Plugin<Project> {
191191 }
192192 }
193193
194+ private static List<MavenPomDeveloper > createDeveloperList (Project project ) {
195+ // Note: id is typically the github user id if the user has a github account
196+ // Note: these lists are sorted alphabetically by section
197+ [
198+ // Founders
199+ founder(' devijvers' , ' Steven Devijver' , project),
200+ founder(' dierk' , ' Dierk König' , project),
201+ founder(' glaforge' , ' Guillaume LaForge' , project),
202+ founder(' graemerocher' , ' Graeme Rocher' , project),
203+ // Developers
204+ // - `active` contributors (should have an ASF account)
205+ // - supports the current framework
206+ developer(' bkoehm' ,' Brian Koehmstedt' , project),
207+ developer(' borinquenkid' ,' Walter B Duque de Estrada' , project),
208+ developer(' codeconsole' , ' Scott Murphy Heiberg' , project),
209+ developer(' davydotcom' ,' David Estes' , project),
210+ developer(' jamesfredley' , ' James Fredley' , project),
211+ developer(' jdaugherty' , ' James Daugherty' , project),
212+ developer(' jpammer' , ' Jonas Pammer' , project),
213+ developer(' lhotari' , ' Lari Hotari' , project),
214+ developer(' matrei' , ' Mattias Reichel' , project),
215+ developer(' paulk' ,' Paul King' , project),
216+ developer(' sbglasius' , ' Søren Berg Glasius' , project),
217+ developer(' sdelamo' , ' Sergio del Amo' , project),
218+ developer(' tbrasmussen' , ' Thomas Rasmussen' , project),
219+ // Past Developers
220+ // - non-active, no contributions across mailing lists, commits, or grails processes in the last 12 months
221+ // - contributors in the pom previously
222+ // - significant contributors (i.e. they were involved in Grails Development or a member of a company that was)
223+ emeritus(' ColinHarrington' ,' Colin Harrington' , project),
224+ emeritus(' JasonTypesCodes' , ' Jason Schindler' , project),
225+ emeritus(' ZacharyKlein' ,' Zachary Klein' , project),
226+ emeritus(' aitortxu' ,' Aitor Alzola' , project),
227+ emeritus(' alexanderzeillinger' ,' Alexander Zeillinger' , project),
228+ emeritus(' alkemist' , ' Luke Daley' , project),
229+ emeritus(' alvarosanchez' ,' Álvaro Sánchez-Mariscal' , project),
230+ emeritus(' anshbansal' ,' Aseem Bansal' , project),
231+ emeritus(' basecamp' , ' Joshua Burnett' , project),
232+ emeritus(' bluesliverx' ,' Brian Saville' , project),
233+ emeritus(' bobbywarner' , ' Bobby Warner' , project),
234+ emeritus(' burtbeckwith' , ' Burt Beckwith' , project),
235+ emeritus(' davidkron' , ' David Kron' , project),
236+ emeritus(' delight' , ' Konstantinos Kostarellis' , project),
237+ emeritus(' erawat' ,' Erawat Chamanont' , project),
238+ emeritus(' erichelgeson' ,' Eric Helgeson' , project),
239+ emeritus(' fordguo' ,' Ford Guo' , project),
240+ emeritus(' houbie' ,' Ivo Houbrechts' , project),
241+ emeritus(' jameskleeh' , ' James Kleeh' , project),
242+ emeritus(' jbrisbin' ,' Jon Brisbin' , project),
243+ emeritus(' jeffscottbrown' , ' Jeff Brown' , project),
244+ emeritus(' jrudolph' ,' Jason Rudolph' , project),
245+ emeritus(' k4zuki' , ' Kazuki Yamamoto' , project),
246+ emeritus(' leebutts' ,' Lee Butts' , project),
247+ emeritus(' longwa' ,' Aaron Long' , project),
248+ emeritus(' ilopmar' , ' Iván López' , project),
249+ emeritus(' marceloverdijk' ,' Marcel Overdijk' , project),
250+ emeritus(' marcpalmer' , ' Marc Palmer' , project),
251+ emeritus(' mpccolorado' ,' Martín Caballero' , project),
252+ emeritus(' nebolsin' ,' Sergey Nebolsin' , project),
253+ emeritus(' niravassar' ,' Nirav Assar' , project),
254+ emeritus(' nobeans' ,' Yasuharu Nakano' , project),
255+ emeritus(
' [email protected] ' ,
' Paras Lakhani' , project),
256+ emeritus(' pledbrook' , ' Peter Ledbrook' , project),
257+ emeritus(' puneetbehl' , ' Puneet Behl' , project),
258+ emeritus(' rlovtangen' ,' Ronny Løvtangen' , project),
259+ emeritus(' robertoschwald' , ' Robert Oschwald' , project),
260+ emeritus(' robfletcher' , ' Rob Fletcher' , project),
261+ emeritus(' rstepanenko' ,' Roman Stepanenko' , project),
262+ emeritus(' rvanderwerf' ,' Ryan Vanderwerf' , project),
263+ emeritus(' sarmbruster' , ' Stefan Armbruster' , project),
264+ emeritus(' smaldini' ,' Stephane Maldini' , project),
265+ emeritus(' tkvw' ,' Dennie de Lange' , project),
266+ emeritus(' tomwidmer' ,' Tom Widmer' , project),
267+ emeritus(' yamkazu' ,' Kazuki Yamamoto' , project),
268+ emeritus(' zanthrash' ,' Zan Thrash' , project),
269+ emeritus(' ziegfried' , ' Siegfried Puchbauer' , project),
270+ // Contributors
271+ // - not full time supporting the project and historically were not considered on the Grails Team or an associated project
272+ // - if any of these members continue to contribute they will become future developers
273+ contributor(' B5A7' , ' Brad' , project),
274+ contributor(
' JudeRV' ,
' [email protected] ' , project),
275+ contributor(' acanby' , ' Andrew Canby' , project),
276+ contributor(' aeisenberg' , ' Andrew Eisenberg' , project),
277+ contributor(' and-dmitry' , ' Dmitry Andreychuk' , project),
278+ contributor(' andersaaberg' , ' Anders Aaberg' , project),
279+ contributor(' aulea' , ' Alar Aule' , project),
280+ contributor(' beckje01' , ' Jeff Beck' , project),
281+ contributor(' benrhine' , ' Ben Rhine' , project),
282+ contributor(' bodiam' , ' Erik Pragt' , project),
283+ contributor(' ctoestreich' , ' Christian Oestreich' , project),
284+ contributor(' danveloper' , ' Dan Woods' , project),
285+ contributor(' ddelponte' , ' Dean Del Ponte' , project),
286+ contributor(' denisfalqueto' , ' Denis Falqueto' , project),
287+ contributor(' dmurat' , ' Damir Murat' , project),
288+ contributor(' doelleri' , ' Donald Oellerich' , project),
289+ contributor(' domurtag' , ' Dónal Murtagh' , project),
290+ contributor(' dpcasady' , ' Danny Casady' , project),
291+ contributor(' dtanner' , ' Dan Tanner' , project),
292+ contributor(' gsartori' ,' Gianluca Sartori' , project),
293+ contributor(' hansd' , ' Hans Dockter' , project),
294+ contributor(' hauner' , ' Martin Hauner' , project),
295+ contributor(' jamesdh' , ' James Hardwick' , project),
296+ contributor(' jccorp' , ' Javier Camacho' , project),
297+ contributor(' joemccall86' , ' Joe McCall' , project),
298+ contributor(' jprinet' , ' Jérôme Prinet' , project),
299+ contributor(' jwagenleitner' , ' John Wagenleitner' , project),
300+ contributor(' lucastex' , ' Lucas Frare Teixeira' , project),
301+ contributor(' mburak' , ' Matias Burak' , project),
302+ contributor(' micfra' , ' Michael Frankfurter' , project),
303+ contributor(' mikea' , ' Mike Aizatsky' , project),
304+ contributor(' mjcmatrix' , ' Matt Carter' , project),
305+ contributor(' olliefreeman' , ' Ollie Freeman' , project),
306+ contributor(' rainboyan' , ' Michael Yan' , project),
307+ contributor(' snimavat' , ' Sudhir Nimavat' , project),
308+ contributor(' sukrit007' , ' Sukrit Khera' , project),
309+ contributor(' tcrossland' , ' Tom Crossland' , project),
310+ contributor(' tednaleid' , ' Ted Naleid' , project),
311+ contributor(' tomaslin' , ' Tomás Lin' , project),
312+ contributor(' uurien' , ' Ugaitz Urien' , project),
313+ contributor(' vinod2800' , ' Vinodkumar Nemagouda' , project),
314+ contributor(' wololock' , ' Szymon Stepniak' , project),
315+ contributor(' zyro23' , ' Zyro' , project),
316+ ]
317+ }
318+
319+ private static MavenPomDeveloper founder (String id , String name , Project project ) {
320+ createPomEntry(' Founder' , id, name, project)
321+ }
322+
323+ private static MavenPomDeveloper developer (String id , String name , Project project ) {
324+ createPomEntry(' Developer' , id, name, project)
325+ }
326+
327+ private static MavenPomDeveloper emeritus (String id , String name , Project project ) {
328+ createPomEntry(' Developer Emeritus' , id, name, project)
329+ }
330+
331+ private static MavenPomDeveloper contributor (String id , String name , Project project ) {
332+ createPomEntry(' Contributor' , id, name, project)
333+ }
334+
335+ private static MavenPomDeveloper createPomEntry (String role , String id , String name , Project project ) {
336+ project. objects. newInstance(MavenPomDeveloper ). tap {
337+ it. roles. add(role)
338+ it. id. set(id)
339+ it. name. set(name)
340+ }
341+ }
342+
194343 private static void ensureJarContainsASFFiles (Project project ) {
195344 project. afterEvaluate {
196345 if (shouldSkipJavaComponent(project)) {
0 commit comments