Move publishing logic to conventions

This commit is contained in:
Edwin Jakobs
2023-03-30 13:28:25 +02:00
parent 0a2b7a08e3
commit a6beabe517
3 changed files with 126 additions and 177 deletions

View File

@@ -1,5 +1,5 @@
plugins { plugins {
alias(libs.plugins.nebula.release) apply false alias(libs.plugins.nebula.release)
alias(libs.plugins.gradle.nexus.publish) alias(libs.plugins.gradle.nexus.publish)
id("org.openrndr.extra.convention.dokka") id("org.openrndr.extra.convention.dokka")
} }
@@ -8,37 +8,6 @@ repositories {
mavenCentral() mavenCentral()
} }
def multiplatformModules = [
"orx-camera",
"orx-color",
"orx-compositor",
"orx-compute-graph",
"orx-compute-graph-nodes",
"orx-easing",
"orx-fx",
"orx-gradient-descent",
"orx-image-fit",
"orx-jumpflood",
"orx-marching-squares",
"orx-no-clear",
"orx-noise",
"orx-parameters",
"orx-property-watchers",
"orx-shade-styles",
"orx-shader-phrases",
"orx-shapes",
"orx-quadtree",
"orx-hash-grid",
"orx-depth-camera",
"orx-triangulation",
"orx-view-box",
"orx-turtle"
]
def doNotPublish = ["openrndr-demos"]
def isReleaseVersion = !version.endsWith("SNAPSHOT")
task buildMainReadme { task buildMainReadme {
doFirst { doFirst {
def subProjects = project.subprojects def subProjects = project.subprojects
@@ -119,149 +88,6 @@ task buildMainReadme {
mainReadme.write(newReadme.join("\n")) mainReadme.write(newReadme.join("\n"))
} }
} }
// publishable && multiplatform
configure(allprojects.findAll { !doNotPublish.contains(it.name) && (multiplatformModules.contains(it.name)) }) {
apply plugin: 'maven-publish'
apply plugin: 'signing'
def fjdj = tasks.create("fakeJavaDocJar", Jar) {
archiveClassifier = "javadoc"
}
publishing {
publications {
matching { it.name == "jvm" }.all { p ->
artifact(fjdj)
}
}
publications {
all {
versionMapping {
allVariants {
fromResolutionOf("allSourceSetsRuntimeDependenciesMetadata")
}
}
pom {
name = "$project.name"
description = "$project.name"
url = 'https://openrndr.org'
developers {
developer {
id = 'edwinjakobs'
name = 'Edwin Jakobs'
email = 'edwin@openrndr.org'
}
}
license {
licenses {
license {
name = 'BSD-2-Clause'
url = 'https://github.com/openrndr/orx/blob/master/LICENSE'
distribution = 'repo'
}
}
}
scm {
connection = "scm:git:git@github.com:openrndr/orx.git"
developerConnection = "scm:git:ssh://github.com/openrndr/orx.git"
url = "https://github.com/openrndr/orx"
}
}
}
}
repositories {
maven {
credentials {
username findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME")
password findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD")
}
if (!isReleaseVersion) {
url "https://s01.oss.sonatype.org/content/repositories/snapshots"
} else {
url "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2"
}
}
}
}
signing {
required { isReleaseVersion && gradle.taskGraph.hasTask("publish") }
sign publishing.publications
}
}
// publishable && JVM only
configure(allprojects.findAll { !doNotPublish.contains(it.name) && !multiplatformModules.contains(it.name) }) {
apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: 'nebula.release'
apply plugin: 'signing'
java {
withJavadocJar()
withSourcesJar()
}
publishing {
publications {
maven(MavenPublication) {
from components.java
versionMapping {
allVariants {
fromResolutionResult()
}
}
groupId = "org.openrndr.extra"
artifactId = "$project.name"
description = "$project.name"
pom {
name = "$project.name"
description = "$project.name"
url = 'https://openrndr.org'
developers {
developer {
id = 'edwinjakobs'
name = 'Edwin Jakobs'
email = 'edwin@openrndr.org'
}
}
license {
licenses {
license {
name = 'BSD-2-Clause'
url = 'https://github.com/openrndr/orx/blob/master/LICENSE'
distribution = 'repo'
}
}
}
scm {
connection = "scm:git:git@github.com:openrndr/orx.git"
developerConnection = "scm:git:ssh://github.com/openrndr/orx.git"
url = "https://github.com/openrndr/orx"
}
}
}
}
repositories {
maven {
credentials {
username findProperty("ossrhUsername") ?: System.getenv("OSSRH_USERNAME")
password findProperty("ossrhPassword") ?: System.getenv("OSSRH_PASSWORD")
}
if (!isReleaseVersion) {
url "https://s01.oss.sonatype.org/content/repositories/snapshots"
} else {
url "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2"
}
}
}
}
signing {
required { isReleaseVersion && gradle.taskGraph.hasTask("publish") }
sign publishing.publications
}
}
group = "org.openrndr.extra" group = "org.openrndr.extra"
nexusPublishing { nexusPublishing {

View File

@@ -1,18 +1,28 @@
package org.openrndr.extra.convention package org.openrndr.extra.convention
import gradle.kotlin.dsl.accessors._e1ec756838cb41004a28483270a62877.publishing
import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.net.URI
val libs = the<LibrariesForLibs>() val libs = the<LibrariesForLibs>()
val shouldPublish = project.name !in setOf("openrndr-demos")
plugins { plugins {
java java
kotlin("jvm") kotlin("jvm")
id("maven-publish") `maven-publish` apply false
id("org.openrndr.extra.convention.component-metadata-rule") id("org.openrndr.extra.convention.component-metadata-rule")
id("org.openrndr.extra.convention.dokka") id("org.openrndr.extra.convention.dokka")
signing
} }
if (shouldPublish) {
apply(plugin = "maven-publish")
}
//apply(plugin = "nebula.release")
repositories { repositories {
mavenCentral() mavenCentral()
@@ -60,3 +70,54 @@ tasks {
kotlinOptions.languageVersion = libs.versions.kotlinLanguage.get() kotlinOptions.languageVersion = libs.versions.kotlinLanguage.get()
} }
} }
java {
withJavadocJar()
withSourcesJar()
}
val isReleaseVersion = !(version.toString()).endsWith("SNAPSHOT")
if (shouldPublish) {
publishing {
publications {
create<MavenPublication>("maven") {
from(components["java"])
groupId = "org.openrndr.extra"
artifactId = project.name
description = project.name
pom {
name.set("$project.name")
description.set("$project.name")
url.set("https://openrndr.org")
developers {
developer {
id.set("edwinjakobs")
name.set("Edwin Jakobs")
email.set("edwin@openrndr.org")
}
}
licenses {
license {
name.set("BSD-2-Clause")
url.set("https://github.com/openrndr/orx/blob/master/LICENSE")
distribution.set("repo")
}
}
scm {
connection.set("scm:git:git@github.com:openrndr/orx.git")
developerConnection.set("scm:git:ssh://github.com/openrndr/orx.git")
url.set("https://github.com/openrndr/orx")
}
}
}
}
}
signing {
setRequired({ isReleaseVersion && gradle.taskGraph.hasTask("publish") })
sign(publishing.publications)
}
}

View File

@@ -4,14 +4,21 @@ import CollectScreenshotsTask
import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.net.URI
val libs = the<LibrariesForLibs>() val libs = the<LibrariesForLibs>()
val shouldPublish = project.name !in setOf("openrndr-demos")
plugins { plugins {
kotlin("multiplatform") kotlin("multiplatform")
id("maven-publish") `maven-publish` apply false
id("org.openrndr.extra.convention.component-metadata-rule") id("org.openrndr.extra.convention.component-metadata-rule")
id("org.openrndr.extra.convention.dokka") id("org.openrndr.extra.convention.dokka")
signing
}
if (shouldPublish) {
apply(plugin = "maven-publish")
} }
repositories { repositories {
@@ -88,3 +95,58 @@ kotlin {
} }
} }
} }
val isReleaseVersion = !(version.toString()).endsWith("SNAPSHOT")
if (shouldPublish) {
publishing {
publications {
val fjdj = tasks.create("fakeJavaDocJar", Jar::class) {
archiveClassifier.set("javadoc")
}
matching { it.name == "jvm" }.forEach { p ->
p as MavenPublication
p.artifact(fjdj)
}
all {
this as MavenPublication
versionMapping {
allVariants {
fromResolutionOf("allSourceSetsRuntimeDependenciesMetadata")
}
}
pom {
name.set("$project.name")
description.set("$project.name")
url.set("https://openrndr.org")
developers {
developer {
id.set("edwinjakobs")
name.set("Edwin Jakobs")
email.set("edwin@openrndr.org")
}
}
licenses {
license {
name.set("BSD-2-Clause")
url.set("https://github.com/openrndr/orx/blob/master/LICENSE")
distribution.set("repo")
}
}
scm {
connection.set("scm:git:git@github.com:openrndr/orx.git")
developerConnection.set("scm:git:ssh://github.com/openrndr/orx.git")
url.set("https://github.com/openrndr/orx")
}
}
}
}
}
signing {
setRequired({ isReleaseVersion && gradle.taskGraph.hasTask("publish") })
sign(publishing.publications)
}
}