Skip to content

Commit

Permalink
simplify gradle. (#24)
Browse files Browse the repository at this point in the history
* simplify gradle.

* Update publish.kt
  • Loading branch information
portlek authored Jun 22, 2024
1 parent 8b9d870 commit 1e966e6
Show file tree
Hide file tree
Showing 19 changed files with 155 additions and 82 deletions.
73 changes: 0 additions & 73 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,80 +1,7 @@
import com.vanniktech.maven.publish.MavenPublishBaseExtension
import com.vanniktech.maven.publish.MavenPublishPlugin
import com.vanniktech.maven.publish.SonatypeHost
import org.jetbrains.dokka.gradle.DokkaPlugin

plugins {
java
alias(libs.plugins.nexus) apply false
alias(libs.plugins.kotlin) apply false
alias(libs.plugins.dokka) apply false
}

repositories.mavenCentral()

subprojects {
apply<JavaPlugin>()
apply<MavenPublishPlugin>()
if (project.name.contains("kotlin")) {
apply<DokkaPlugin>()
apply(plugin = "org.jetbrains.kotlin.jvm")
}

repositories.mavenCentral()

java {
toolchain {
languageVersion = JavaLanguageVersion.of(8)
}
}

tasks {
val javadocJar by creating(Jar::class) {
dependsOn("javadoc")
archiveClassifier.set("javadoc")
from(javadoc)
}

val sourcesJar by creating(Jar::class) {
dependsOn("classes")
archiveClassifier.set("sources")
from(sourceSets["main"].allSource)
}
}

val moduleName = project.findProperty("artifact-id") as String?
val projectName = "pubsub${if (moduleName == null) "" else "-$moduleName"}"
val signRequired = project.hasProperty("sign-required")

extensions.configure<MavenPublishBaseExtension> {
coordinates(project.group.toString(), projectName, project.version.toString())
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, true)
if (signRequired) {
signAllPublications()
}

pom {
name.set(projectName)
description.set("Simplified pubsub library for Redis and various databases.")
url.set("https://github.com/Infumia/pubsub")
licenses {
license {
name.set("MIT License")
url.set("https://mit-license.org/license.txt")
}
}
developers {
developer {
id.set("portlek")
name.set("Hasan Demirtaş")
email.set("[email protected]")
}
}
scm {
connection.set("scm:git:git://github.com/infumia/pubsub.git")
developerConnection.set("scm:git:ssh://github.com/infumia/pubsub.git")
url.set("https://github.com/infumia/pubsub/")
}
}
}
}
18 changes: 18 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
plugins {
`kotlin-dsl`
}

repositories {
mavenCentral()
gradlePluginPortal()
}

dependencies {
implementation(libs.nexus.plugin)
implementation(libs.kotlin.plugin)
implementation(libs.dokka.plugin)
}

kotlin {
jvmToolchain(11)
}
7 changes: 7 additions & 0 deletions buildSrc/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
47 changes: 47 additions & 0 deletions buildSrc/src/main/kotlin/net/infumia/gradle/common.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package net.infumia.gradle

import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.tasks.bundling.Jar
import org.gradle.jvm.toolchain.JavaLanguageVersion
import org.gradle.kotlin.dsl.*
import org.jetbrains.dokka.gradle.DokkaPlugin

fun Project.applyCommon(
javaVersion: Int = 8,
sources: Boolean = true,
javadoc: Boolean = true
) {
apply<JavaPlugin>()

if (name.contains("kotlin")) {
apply<DokkaPlugin>()
apply(plugin = "org.jetbrains.kotlin.jvm")
}

repositories.mavenCentral()

extensions.configure<JavaPluginExtension> {
toolchain {
languageVersion = JavaLanguageVersion.of(javaVersion)
}
}

if (javadoc) {
val javadocJar by tasks.creating(Jar::class) {
dependsOn("javadoc")
archiveClassifier.set("javadoc")
from(javadoc)
}
}

if (sources) {
val sourceSets = extensions.getByType<JavaPluginExtension>().sourceSets
val sourcesJar by tasks.creating(Jar::class) {
dependsOn("classes")
archiveClassifier.set("sources")
from(sourceSets["main"].allSource)
}
}
}
52 changes: 52 additions & 0 deletions buildSrc/src/main/kotlin/net/infumia/gradle/publish.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package net.infumia.gradle

import com.vanniktech.maven.publish.MavenPublishBaseExtension
import com.vanniktech.maven.publish.MavenPublishPlugin
import com.vanniktech.maven.publish.SonatypeHost
import org.gradle.api.Project
import org.gradle.kotlin.dsl.*

fun Project.publish(
moduleName: String? = null,
javaVersion: Int = 8,
sources: Boolean = true,
javadoc: Boolean = true
) {
applyCommon(javaVersion, sources, javadoc)
apply<MavenPublishPlugin>()

val projectName = "pubsub${if (moduleName == null) "" else "-$moduleName"}"
val signRequired = project.hasProperty("sign-required")

extensions.configure<MavenPublishBaseExtension> {
coordinates(project.group.toString(), projectName, project.version.toString())
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, true)
if (signRequired) {
signAllPublications()
}

pom {
name.set(projectName)
description.set("")
url.set("https://github.com/Infumia/pubsub")
licenses {
license {
name.set("MIT License")
url.set("https://mit-license.org/license.txt")
}
}
developers {
developer {
id.set("portlek")
name.set("Hasan Demirtaş")
email.set("[email protected]")
}
}
scm {
connection.set("scm:git:git://github.com/infumia/pubsub.git")
developerConnection.set("scm:git:ssh://github.com/infumia/pubsub.git")
url.set("https://github.com/infumia/pubsub/")
}
}
}
}
3 changes: 3 additions & 0 deletions codec/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import net.infumia.gradle.publish

publish("codec")
1 change: 0 additions & 1 deletion codec/gradle.properties

This file was deleted.

4 changes: 4 additions & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import net.infumia.gradle.publish

publish()

dependencies {
compileOnly(project(":codec"))

Expand Down
7 changes: 4 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serializa
kotlinx-serialization-protobuf = { module = "org.jetbrains.kotlinx:kotlinx-serialization-protobuf", version.ref = "kotlinserialization" }
kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.8.1" }

nexus-plugin = { module = "com.vanniktech:gradle-maven-publish-plugin", version = "0.29.0" }
kotlin-plugin = { module = "org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin", version.ref = "kotlin" }
dokka-plugin = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version = "1.9.20" }

[plugins]
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
dokka = { id = "org.jetbrains.dokka", version = "1.9.20" }
nexus = { id = "com.vanniktech.maven.publish", version = "0.29.0" }
4 changes: 4 additions & 0 deletions jackson/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import net.infumia.gradle.publish

publish("jackson")

dependencies {
compileOnly(project(":codec"))

Expand Down
1 change: 0 additions & 1 deletion jackson/gradle.properties

This file was deleted.

4 changes: 4 additions & 0 deletions kotlin/coroutines/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import net.infumia.gradle.publish

publish("kotlin-coroutines")

dependencies {
compileOnly(project(":common"))

Expand Down
1 change: 0 additions & 1 deletion kotlin/coroutines/gradle.properties

This file was deleted.

4 changes: 4 additions & 0 deletions kotlin/extensions/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import net.infumia.gradle.publish

publish("kotlin")

dependencies {
compileOnly(project(":common"))
}
1 change: 0 additions & 1 deletion kotlin/extensions/gradle.properties

This file was deleted.

4 changes: 4 additions & 0 deletions kotlin/protobuf/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import net.infumia.gradle.publish

plugins {
alias(libs.plugins.kotlin.serialization)
}

publish("kotlin-protobuf")

dependencies {
compileOnly(project(":codec"))

Expand Down
1 change: 0 additions & 1 deletion kotlin/protobuf/gradle.properties

This file was deleted.

4 changes: 4 additions & 0 deletions redis/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import net.infumia.gradle.publish

publish("redis")

dependencies {
compileOnly(project(":codec"))
compileOnly(project(":common"))
Expand Down
1 change: 0 additions & 1 deletion redis/gradle.properties

This file was deleted.

0 comments on commit 1e966e6

Please sign in to comment.