Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
Configure publishing to OSSRH
Browse files Browse the repository at this point in the history
  • Loading branch information
erikhuizinga committed Feb 16, 2021
1 parent 34f0841 commit 95a16b6
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 74 deletions.
1 change: 0 additions & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ plugins { `kotlin-dsl` }
repositories { jcenter() }

dependencies {
implementation("com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4")
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.70")
}
79 changes: 6 additions & 73 deletions buildSrc/src/main/kotlin/PublishConfig.kt
Original file line number Diff line number Diff line change
@@ -1,81 +1,14 @@
import com.jfrog.bintray.gradle.BintrayExtension
import com.jfrog.bintray.gradle.BintrayPlugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.extra

fun Project.configurePublishing(
name: String,
version: String,
artifactId: String
) {
configureJavaPlugin()
val publication = "${artifactId}Publication"
configureMavenPublishing(
version = version,
artifactId = artifactId,
publication = publication
)
configureBintrayPlugin(
version = version,
artifactId = artifactId,
publication = publication
)
}

private fun Project.configureJavaPlugin() {
apply<JavaPlugin>()
configure<JavaPluginExtension> { withSourcesJar() }
}

private fun Project.configureMavenPublishing(
version: String,
artifactId: String,
publication: String
) {
apply<MavenPublishPlugin>()
configure<PublishingExtension> {
publications {
create<MavenPublication>(publication) {
groupId = "com.github.erikhuizinga"
this.artifactId = artifactId
this.version = version
from(components["java"])
}
}
}
}

private fun Project.configureBintrayPlugin(
version: String,
artifactId: String,
publication: String
) {
apply<BintrayPlugin>()
configure<BintrayExtension> {
configure<BintrayExtension> {
dryRun = true
publish = true
user = properties["bintrayUser"] as? String
key = properties["bintrayKey"] as? String
pkg.apply {
this.version.apply {
name = version
vcsTag = "${artifactId}v$version"
}
repo = "maven"
name = artifactId
userOrg = "erikhuizinga"
setLicenses("Apache-2.0")
vcsUrl = "https://github.com/erikhuizinga/mockk-patterns.git"
}
setPublications(publication)
}
}
extra["NAME"] = name
extra["VERSION"] = version
extra["ARTIFACT_ID"] = artifactId
apply(from = "${rootProject.rootDir}/ossrh-publishing.gradle")
}
1 change: 1 addition & 0 deletions junit4/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ tasks.test {
}

configurePublishing(
name = "MockK Patterns for JUnit 4",
version = "1.0.0",
artifactId = "mockk-junit4"
)
1 change: 1 addition & 0 deletions junit5/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ dependencies {
tasks.test { useJUnitPlatform() }

configurePublishing(
name = "MockK Patterns for JUnit 5",
version = "2.0.0",
artifactId = "mockk-junit5"
)
80 changes: 80 additions & 0 deletions ossrh-publishing.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'signing'

def theArtifactID = ext.ARTIFACT_ID
def theName = ext.NAME
def theVersion = ext.VERSION

java {
withJavadocJar()
withSourcesJar()
}

javadocJar {
archiveClassifier.set('javadoc')
from javadoc
}

sourcesJar {
archiveClassifier.set('sources')
from sourceSets.main.allSource
}

artifacts {
archives sourcesJar, javadocJar
}

signing {
sign configurations.archives
}

group = "com.github.erikhuizinga"
archivesBaseName = theArtifactID
version = theVersion

uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}

snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}

pom.project {
name = theName
artifactId theArtifactID
description theName
url 'https://github.com/erikhuizinga/mockk-patterns'

packaging 'jar'

scm {
connection 'scm:git:git://github.com/erikhuizinga/mockk-patterns.git'
developerConnection 'scm:git:ssh://github.com/erikhuizinga/mockk-patterns.git'
url 'https://github.com/erikhuizinga/mockk-patterns/tree/master'
}

licenses {
license {
name 'The Apache License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0'
}
}

developers {
developer {
id 'erikhuizinga'
name 'Erik Huizinga'
email '[email protected]'
}
}
}
}
}
}

0 comments on commit 95a16b6

Please sign in to comment.