manual pom config

This commit is contained in:
Alexander Nozik 2022-08-23 16:31:44 +03:00
parent 5d0324bc7b
commit aafcb06a1e
No known key found for this signature in database
GPG Key ID: F7FCF2DD25C71357
4 changed files with 47 additions and 43 deletions

View File

@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add `-Xjdk-release` key - Add `-Xjdk-release` key
### Changed ### Changed
- Require manual pom config for publications
- Kotlin 1.7.20-Beta - Kotlin 1.7.20-Beta
- Versions update - Versions update
- Project group changed to `space.kscience` - Project group changed to `space.kscience`

View File

@ -4,6 +4,7 @@ import kotlinx.validation.ApiValidationExtension
import kotlinx.validation.BinaryCompatibilityValidatorPlugin import kotlinx.validation.BinaryCompatibilityValidatorPlugin
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.publish.maven.MavenPom
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.*
import org.jetbrains.changelog.ChangelogPlugin import org.jetbrains.changelog.ChangelogPlugin
@ -19,18 +20,6 @@ public class KSciencePublishingExtension(public val project: Project) {
private var isVcsInitialized = false private var isVcsInitialized = false
internal val repositoryNames = mutableSetOf<String>() internal val repositoryNames = mutableSetOf<String>()
@Deprecated("Use git function and report an issue if other VCS is used.")
public fun vcs(vcsUrl: String) {
if (!isVcsInitialized) {
project.setupPublication {
url.set(vcsUrl)
scm { url.set(vcsUrl) }
}
isVcsInitialized = true
}
}
/** /**
* Configures Git repository (sources) for the publication. * Configures Git repository (sources) for the publication.
* *
@ -38,16 +27,23 @@ public class KSciencePublishingExtension(public val project: Project) {
* @param connectionUrl URL of the Git repository. * @param connectionUrl URL of the Git repository.
* @param developerConnectionUrl URL of the Git repository for developers. * @param developerConnectionUrl URL of the Git repository for developers.
*/ */
public fun git(vcsUrl: String, connectionUrl: String? = null, developerConnectionUrl: String? = connectionUrl) { public fun pom(
vcsUrl: String,
connectionUrl: String? = null,
developerConnectionUrl: String? = connectionUrl,
connectionPrefix: String = "scm:git:",
pomConfig: MavenPom.() -> Unit,
) {
if (!isVcsInitialized) { if (!isVcsInitialized) {
project.setupPublication { project.setupPublication {
url.set(vcsUrl) url.set(vcsUrl)
scm { scm {
url.set(vcsUrl) url.set(vcsUrl)
connectionUrl?.let { connection.set("scm:git:$it") } connectionUrl?.let { connection.set("$connectionPrefix$it") }
developerConnectionUrl?.let { developerConnection.set("scm:git:$it") } developerConnectionUrl?.let { developerConnection.set("$connectionPrefix$it") }
} }
pomConfig()
} }
isVcsInitialized = true isVcsInitialized = true
@ -63,13 +59,9 @@ public class KSciencePublishingExtension(public val project: Project) {
*/ */
public fun github( public fun github(
githubProject: String, githubProject: String,
githubOrg: String = "mipt-npm", githubOrg: String,
addToRelease: Boolean = project.requestPropertyOrNull("publishing.github") == "true", addToRelease: Boolean = project.requestPropertyOrNull("publishing.github") == "true",
) { ) {
// Automatically initialize VCS using GitHub
if (!isVcsInitialized) {
git("https://github.com/$githubOrg/${githubProject}", "https://github.com/$githubOrg/${githubProject}.git")
}
if (addToRelease) { if (addToRelease) {
try { try {
@ -88,7 +80,7 @@ public class KSciencePublishingExtension(public val project: Project) {
* @param addToRelease publish packages in the `release` task to the Space repository. * @param addToRelease publish packages in the `release` task to the Space repository.
*/ */
public fun space( public fun space(
spaceRepo: String = "https://maven.pkg.jetbrains.space/mipt-npm/p/sci/maven", spaceRepo: String,
addToRelease: Boolean = project.requestPropertyOrNull("publishing.space") != "false", addToRelease: Boolean = project.requestPropertyOrNull("publishing.space") != "false",
) { ) {
project.addSpacePublishing(spaceRepo) project.addSpacePublishing(spaceRepo)
@ -142,6 +134,8 @@ public open class KScienceProjectPlugin : Plugin<Project> {
subprojects { subprojects {
val readmeExtension = KScienceReadmeExtension(this) val readmeExtension = KScienceReadmeExtension(this)
extensions.add("readme", readmeExtension) extensions.add("readme", readmeExtension)
@Suppress("UNUSED_VARIABLE")
val generateReadme by tasks.creating { val generateReadme by tasks.creating {
group = "documentation" group = "documentation"
description = "Generate a README file if stub is present" description = "Generate a README file if stub is present"
@ -265,9 +259,11 @@ public open class KScienceProjectPlugin : Plugin<Project> {
val publicationName = matchResult.groups["publication"]!!.value.capitalize() val publicationName = matchResult.groups["publication"]!!.value.capitalize()
val releaseTaskName = "release$publicationName" val releaseTaskName = "release$publicationName"
val targetReleaseTask = rootProject.tasks.findByName(releaseTaskName) ?: rootProject.tasks.create(releaseTaskName) { val targetReleaseTask =
rootProject.tasks.findByName(releaseTaskName) ?: rootProject.tasks.create(releaseTaskName) {
group = RELEASE_GROUP group = RELEASE_GROUP
description = "Publish platform release artifact for $publicationName to all repositories" description =
"Publish platform release artifact for $publicationName to all repositories"
} }
releaseAll.dependsOn(targetReleaseTask) releaseAll.dependsOn(targetReleaseTask)

View File

@ -80,23 +80,6 @@ internal fun Project.setupPublication(mavenPomConfiguration: MavenPom.() -> Unit
name.set(project.name) name.set(project.name)
description.set(project.description ?: project.name) description.set(project.description ?: project.name)
licenses {
license {
name.set("The Apache Software License, Version 2.0")
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
distribution.set("repo")
}
}
developers {
developer {
id.set("MIPT-NPM")
name.set("MIPT nuclear physics methods laboratory")
organization.set("MIPT")
organizationUrl.set("https://npm.mipt.ru")
}
}
scm { scm {
tag.set(project.version.toString()) tag.set(project.version.toString())
} }

View File

@ -0,0 +1,24 @@
package space.kscience.gradle
import org.gradle.api.publish.maven.MavenPom
public fun MavenPom.useApache2Licence(){
licenses {
license {
name.set("The Apache Software License, Version 2.0")
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
distribution.set("repo")
}
}
}
public fun MavenPom.useSPCTeam(){
developers {
developer {
id.set("SPC")
name.set("Scientific programming centre")
organization.set("MIPT")
organizationUrl.set("https://sciprog.center/")
}
}
}