Update Gradle, make multiple release tasks for each platform instead of passing a property

This commit is contained in:
Iaroslav Postovalov 2022-03-07 20:41:56 +07:00
parent 63600f9ebb
commit 74b38c62ef
7 changed files with 19 additions and 25 deletions

View File

@ -33,7 +33,6 @@ dependencies {
implementation(libs.dokka.gradle)
implementation(libs.kotlin.jupyter.gradle)
implementation(libs.kotlin.serialization)
@Suppress("UnstableApiUsage")
implementation(libs.kotlinx.html)
implementation("org.tomlj:tomlj:1.0.0")
// // nexus publishing plugin
@ -60,7 +59,7 @@ gradlePlugin {
create("project") {
id = "ru.mipt.npm.gradle.project"
description = "The root plugin for multimodule project infrastructure"
description = "The root plugin for multi-module project infrastructure"
implementationClass = "ru.mipt.npm.gradle.KScienceProjectPlugin"
}
@ -215,6 +214,10 @@ afterEvaluate {
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "11"
}
tasks.processResources.configure {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
from("gradle/libs.versions.toml")

View File

@ -1,7 +1,7 @@
[versions]
tools = "0.11.1-kotlin-1.6.10"
kotlin = "1.6.10"
atomicfu = "0.17.0"
atomicfu = "0.17.1"
binary-compatibility-validator = "0.8.0"
changelog = "1.3.1"
dokka = "1.6.10"

Binary file not shown.

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -1,3 +1 @@
rootProject.name = "gradle-tools"
enableFeaturePreview("VERSION_CATALOGS")

View File

@ -53,18 +53,22 @@ public class KSciencePublishingExtension(public val project: Project) {
}
}
@Suppress("UNUSED_VARIABLE")
private val release by project.tasks.creating {
private val releaseTasks = mutableSetOf<Task>()
private fun linkPublicationsToReleaseTask(name: String) = project.afterEvaluate {
allTasks()
.filter { it.name.startsWith("publish") && it.name.endsWith("To${name.capitalize()}Repository") }
.forEach {
val theName = "release${it.name.removePrefix("publish").removeSuffix("")}"
logger.info("Making $theName task depend on ${it.name}")
val releaseTask = project.tasks.findByName(theName) ?: project.tasks.create(theName) {
group = KScienceProjectPlugin.RELEASE_GROUP
description = "Publish development or production release based on version suffix"
}
private fun linkPublicationsToReleaseTask(name: String) = project.afterEvaluate {
allTasks()
.filter { it.name == "publish${publicationTarget}To${name.capitalize()}Repository" }
.forEach {
logger.info("Linking $it to release")
release.dependsOn(it)
releaseTasks += releaseTask
releaseTask.dependsOn(it)
}
}
@ -73,7 +77,6 @@ public class KSciencePublishingExtension(public val project: Project) {
*
* @param githubProject the GitHub project.
* @param githubOrg the GitHub user or organization.
* @param publish add publish task for github.
* @param addToRelease publish packages in the `release` task to the GitHub repository.
*/
public fun github(

View File

@ -107,16 +107,6 @@ internal fun Project.setupPublication(mavenPomConfiguration: MavenPom.() -> Unit
internal fun Project.isSnapshot() = "dev" in version.toString() || version.toString().endsWith("SNAPSHOT")
internal val Project.publicationTarget: String
get() {
val publicationPlatform = project.findProperty("publishing.platform") as? String
return if (publicationPlatform == null) {
"AllPublications"
} else {
publicationPlatform.capitalize() + "Publication"
}
}
internal fun Project.addGithubPublishing(
githubOrg: String,
githubProject: String,