@@ -166,39 +166,9 @@ public open class KScienceProjectPlugin : Plugin<Project> {
166166 }
167167 }
168168
169- tasks.withType<AbstractDokkaTask > {
170- dependsOn(generateReadme)
171- }
172- }
173-
174- val releaseAll by tasks.creating {
175- group = RELEASE_GROUP
176- description = " Publish development or production release based on version suffix"
177- }
178-
179- allprojects {
180- afterEvaluate {
181- ksciencePublish.repositoryNames.forEach { repositoryName ->
182- val repositoryNameCapitalized = repositoryName.capitalize()
183-
184- tasks.withType<PublishToMavenRepository >()
185- .filter { it.name.startsWith(" publish" ) && it.name.endsWith(" To${repositoryNameCapitalized} Repository" ) }
186- .forEach {
187- val theName = " release${
188- it.name.removePrefix(" publish" ).removeSuffix(" To${repositoryNameCapitalized} Repository" )
189- } "
190-
191- val targetReleaseTask = tasks.findByName(theName) ? : tasks.create(theName) {
192- group = RELEASE_GROUP
193- description = " Publish platform release artifact"
194- }
195-
196- releaseAll.dependsOn(targetReleaseTask)
197-
198- targetReleaseTask.dependsOn(it)
199- }
200- }
201- }
169+ // tasks.withType<AbstractDokkaTask> {
170+ // dependsOn(generateReadme)
171+ // }
202172 }
203173
204174 val generateReadme by tasks.creating {
@@ -264,6 +234,39 @@ public open class KScienceProjectPlugin : Plugin<Project> {
264234 dependsOn(generateReadme)
265235 }
266236
237+
238+ val releaseAll by tasks.creating {
239+ group = RELEASE_GROUP
240+ description = " Publish development or production release based on version suffix"
241+ dependsOn(generateReadme)
242+ }
243+
244+ allprojects {
245+ afterEvaluate {
246+ ksciencePublish.repositoryNames.forEach { repositoryName ->
247+ val repositoryNameCapitalized = repositoryName.capitalize()
248+
249+ val pattern = " publish(?<publication>.*)PublicationTo${repositoryNameCapitalized} Repository"
250+ .toRegex()
251+
252+ tasks.withType<PublishToMavenRepository >().toList().forEach forEachPublication@ {
253+ val matchResult = pattern.matchEntire(it.name) ? : return @forEachPublication
254+ val publicationName = matchResult.groups[" publication" ]!! .value.capitalize()
255+ val releaseTaskName = " release$publicationName "
256+
257+ val targetReleaseTask = rootProject.tasks.findByName(releaseTaskName) ? : rootProject.tasks.create(releaseTaskName) {
258+ group = RELEASE_GROUP
259+ description = " Publish platform release artifact for $publicationName to all repositories"
260+ }
261+
262+ releaseAll.dependsOn(targetReleaseTask)
263+
264+ targetReleaseTask.dependsOn(it)
265+ }
266+ }
267+ }
268+ }
269+
267270 // Disable API validation for snapshots
268271 if (isSnapshot()) {
269272 extensions.findByType<ApiValidationExtension >()?.apply {
0 commit comments