spine-runtimes/spine-libgdx/publishing.gradle

150 lines
4.9 KiB
Groovy

// JReleaser config for release builds to Central Portal
if (project.hasProperty('RELEASE')) {
apply plugin: 'org.jreleaser'
jreleaser {
deploy {
maven {
mavenCentral {
sonatype {
active = 'ALWAYS'
username = getRepositoryUsername()
password = getRepositoryPassword()
url = 'https://central.sonatype.com/api/v1/publisher'
stagingRepository("${buildDir}/staging-deploy")
sign = false
verifyPom = false
}
}
}
}
}
}
project("spine-libgdx") {
apply plugin: "java-library"
apply plugin: "maven-publish"
apply plugin: "signing"
dependencies {
implementation "com.badlogicgames.gdx:gdx:$libgdxVersion"
}
tasks.register("sourceJar", Jar) {
archiveClassifier.set("sources")
from(sourceSets.main.allJava)
}
tasks.javadoc {
failOnError = false
options.addStringOption('Xdoclint:none', '-quiet')
}
tasks.register("javadocJar", Jar) {
dependsOn javadoc
archiveClassifier.set("javadoc")
from(javadoc.destinationDir)
}
afterEvaluate {
publishing {
publications {
create("release", MavenPublication) {
from(components.java)
artifact(tasks.getByName("sourceJar"))
artifact(tasks.getByName("javadocJar"))
groupId = "com.esotericsoftware.spine"
artifactId = "spine-libgdx"
version = project.version
pom {
packaging = "jar"
name = POM_NAME
if(!POM_DESCRIPTION.isEmpty())
description = POM_DESCRIPTION
url = POM_URL
licenses {
license {
name = POM_LICENCE_NAME
url = POM_LICENCE_URL
distribution = POM_LICENCE_DIST
}
}
developers {
developer {
name.set("Esoteric Software")
email.set("contact@esotericsoftware.com")
}
}
scm {
connection = POM_SCM_CONNECTION
developerConnection = POM_SCM_DEV_CONNECTION
url = POM_SCM_URL
}
}
}
}
repositories {
maven {
name = "SonaType"
url = project.version.endsWith("-SNAPSHOT")
? getSnapshotRepositoryUrl()
// If release build, dump artifacts to root project build/staging-deploy folder for consumption by jreleaser
: rootProject.layout.buildDirectory.dir('staging-deploy')
if (project.version.endsWith("-SNAPSHOT") && (getRepositoryUsername() || getRepositoryPassword())) {
credentials {
username = getRepositoryUsername()
password = getRepositoryPassword()
}
}
}
}
}
signing {
useGpgCmd()
sign(publishing.publications["release"])
}
// Simply using "required" in signing block doesn't work because taskGraph isn't ready yet.
gradle.taskGraph.whenReady {
tasks.withType(Sign) {
onlyIf { !project.version.endsWith("-SNAPSHOT") }
}
}
}
}
// JReleaser config for release builds to Central Portal
if (project.hasProperty('RELEASE')) {
apply plugin: 'org.jreleaser'
jreleaser {
deploy {
maven {
mavenCentral {
sonatype {
active = 'ALWAYS'
username = getRepositoryUsername()
password = getRepositoryPassword()
url = 'https://central.sonatype.com/api/v1/publisher'
stagingRepository("${rootProject.buildDir}/staging-deploy")
sign = false
verifyPom = false
}
}
}
}
}
// For release builds, create a task that depends on publishing and finalizes with jreleaser
tasks.register('publishRelease') {
dependsOn tasks.withType(PublishToMavenRepository)
finalizedBy tasks.named('jreleaserDeploy')
}
}