From a09e90fa50b29a7ae759d52d6735c91dc44f4187 Mon Sep 17 00:00:00 2001 From: Quinn Date: Tue, 3 Mar 2026 15:30:54 -0500 Subject: [PATCH 1/2] feat: add publishing support --- .github/workflows/publish.yml | 43 ++++++++++++++++++++++++++ build.gradle.kts | 1 + gradle/libs.versions.toml | 10 ++++-- ksp-test-fixtures/build.gradle.kts | 49 ++++++++++++++++++++++++++++++ 4 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..0e92971 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,43 @@ +name: publish + +on: + workflow_dispatch: + release: + types: [published] + +jobs: + publish: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: "temurin" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + with: + gradle-home-cache-cleanup: true + + - name: Verify build + run: ./gradlew check + + - name: Extract version from tag + id: extract_version + run: | + echo "VERSION=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" + + - name: Publish to Maven Central + env: + ORG_GRADLE_PROJECT_version: ${{ steps.extract_version.outputs.VERSION }} + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY_PASSWORD }} + run: | + ./gradlew publishAndReleaseToMavenCentral --no-parallel --no-configuration-cache diff --git a/build.gradle.kts b/build.gradle.kts index 26ee217..29cd569 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,4 @@ plugins { alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.vanniktech.maven.publish) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f42c5b7..d95b2bd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,10 +1,12 @@ [versions] -kotlin = "2.1.0" -ksp = "2.2.21-2.0.5" -ksp-plugin = "2.1.0-1.0.29" +kotlin = "2.2.0" +ksp = "2.3.6" +ksp-plugin = "2.3.6" assertj = "3.27.3" +dokka = "2.1.0" junit-jupiter = "5.11.4" kotlinpoet = "2.2.0" +vanniktech-maven-publish = "0.36.0" [libraries] kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } @@ -17,5 +19,7 @@ junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "jun kotlinpoet = { module = "com.squareup:kotlinpoet", version.ref = "kotlinpoet" } [plugins] +dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp-plugin" } +vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktech-maven-publish" } diff --git a/ksp-test-fixtures/build.gradle.kts b/ksp-test-fixtures/build.gradle.kts index a2d0cbe..080ca91 100644 --- a/ksp-test-fixtures/build.gradle.kts +++ b/ksp-test-fixtures/build.gradle.kts @@ -1,8 +1,14 @@ +import com.vanniktech.maven.publish.JavadocJar +import com.vanniktech.maven.publish.KotlinJvm +import com.vanniktech.maven.publish.MavenPublishBaseExtension +import com.vanniktech.maven.publish.SourcesJar import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { kotlin("jvm") + alias(libs.plugins.dokka) alias(libs.plugins.ksp) + alias(libs.plugins.vanniktech.maven.publish) } group = "com.faire.ksp-reflection-testing" @@ -50,3 +56,46 @@ dependencies { testImplementation(libs.assertj) testImplementation(libs.junit.jupiter) } + +extensions.configure { + configure( + KotlinJvm( + javadocJar = JavadocJar.Dokka("dokkaGeneratePublicationHtml"), + sourcesJar = SourcesJar.Sources() + ) + ) + + publishToMavenCentral(automaticRelease = true) + signAllPublications() + + pom { + name.set("${project.group}:${project.name}") + description.set( + """ + Reflection-based test harness for KSP + """.trimIndent() + ) + url.set("https://github.com/faire/ksp-reflection-testing") + + licenses { + license { + name.set("MIT License") + url.set("https://github.com/faire/ksp-reflection-testing/blob/main/LICENSE") + } + } + + developers { + developer { + id.set("james") + name.set("James Oliver") + email.set("james.oliver@faire.com") + } + } + + scm { + connection.set("scm:git:https://github.com/faire/ksp-reflection-testing.git") + developerConnection.set("scm:git:git@github.com:faire/ksp-reflection-testing.git") + url.set("https://github.com/faire/ksp-reflection-testing") + } + } +} From 473f00cb3b7ff53d6c00ae9aee5bbe3fe0481ef7 Mon Sep 17 00:00:00 2001 From: Quinn Date: Tue, 3 Mar 2026 17:05:45 -0500 Subject: [PATCH 2/2] add luan and quinn to developers --- ksp-test-fixtures/build.gradle.kts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ksp-test-fixtures/build.gradle.kts b/ksp-test-fixtures/build.gradle.kts index 080ca91..4d0e938 100644 --- a/ksp-test-fixtures/build.gradle.kts +++ b/ksp-test-fixtures/build.gradle.kts @@ -90,6 +90,16 @@ extensions.configure { name.set("James Oliver") email.set("james.oliver@faire.com") } + developer { + id.set("luan") + name.set("Luan Nico") + email.set("luan@faire.com") + } + developer { + id.set("quinn") + name.set("Quinn Budan") + email.set("quinn.budan@faire.com") + } } scm {