Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
044c7ad
Upgrade to Gradle 9
philipp94831 Jan 28, 2026
192e3d0
Upgrade to Gradle 9
philipp94831 Jan 28, 2026
3b2f9df
Upgrade to Gradle 9
philipp94831 Jan 28, 2026
8bdc1bb
Upgrade to Gradle 9
philipp94831 Jan 28, 2026
d8e7e73
Upgrade to Gradle 9
philipp94831 Jan 28, 2026
e38bcb7
Fix dokka plugin
philipp94831 Jan 28, 2026
15dfe9b
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
836ddf0
Fix
philipp94831 Jan 28, 2026
c963cd5
Fix
philipp94831 Jan 28, 2026
168f6a0
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
2c793ec
Fix
philipp94831 Jan 28, 2026
d7ca2b6
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
45618a5
Fix
philipp94831 Jan 28, 2026
37edb50
Fix
philipp94831 Jan 28, 2026
554f749
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
609acac
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
0b7785f
Update
philipp94831 Jan 28, 2026
184f3a0
Update
philipp94831 Jan 28, 2026
1bd6e80
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
4f65a22
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Jan 28, 2026
5fccbcb
WIP
philipp94831 Jan 28, 2026
0f675c5
WIP
philipp94831 Jan 28, 2026
2ec5b1f
WIP
philipp94831 Jan 28, 2026
038b1ca
WIP
philipp94831 Jan 28, 2026
26a592e
WIP
philipp94831 Jan 28, 2026
8e3d2f5
WIP
philipp94831 Jan 28, 2026
75f379f
WIP
philipp94831 Jan 28, 2026
11d44ba
WIP
philipp94831 Jan 28, 2026
90d5ad6
WIP
philipp94831 Jan 28, 2026
532f364
WIP
philipp94831 Jan 28, 2026
7633ff2
WIP
philipp94831 Jan 28, 2026
99c0779
WIP
philipp94831 Jan 28, 2026
e84b8f8
WIP
philipp94831 Jan 28, 2026
b32a7f8
WIP
philipp94831 Jan 28, 2026
4951c45
WIP
philipp94831 Jan 28, 2026
518c25a
WIP
philipp94831 Jan 28, 2026
ee92700
WIP
philipp94831 Jan 28, 2026
d3c779f
WIP
philipp94831 Jan 28, 2026
10fe6e6
WIP
philipp94831 Jan 28, 2026
4605d29
WIP
philipp94831 Jan 28, 2026
da56a75
WIP
philipp94831 Jan 28, 2026
fb3761f
WIP
philipp94831 Jan 28, 2026
d86270a
Revert
philipp94831 Aug 13, 2026
9061383
Merge remote-tracking branch 'origin/master' into fix/dokka
philipp94831 Aug 13, 2026
fdb66ab
Failing test
philipp94831 Aug 13, 2026
ec7e3a6
Fix
philipp94831 Aug 13, 2026
05e308a
Remove PluginTest
philipp94831 Aug 13, 2026
ebaadb4
Remove PluginTest
philipp94831 Aug 13, 2026
38bf6ce
Remove PluginTest
philipp94831 Aug 13, 2026
d3ea31d
Fix
philipp94831 Aug 13, 2026
b8e44fb
Update
philipp94831 Aug 13, 2026
8f584e6
Update
philipp94831 Aug 13, 2026
53b7d1d
Update
philipp94831 Aug 13, 2026
7bfe4af
Update
philipp94831 Aug 13, 2026
e97f73d
Debug
philipp94831 Aug 13, 2026
05452be
Debug
philipp94831 Aug 13, 2026
f5e397c
Fix JavaDoc
philipp94831 Aug 13, 2026
61ab873
Fix JavaDoc
philipp94831 Aug 13, 2026
ee2dc24
Fix JavaDoc
philipp94831 Aug 13, 2026
0d0afc9
Refactor
philipp94831 Aug 13, 2026
ce02652
Update copyright
philipp94831 Aug 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion sonar/src/main/kotlin/com/bakdata/gradle/SonarPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ import org.gradle.api.logging.Logging
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.SourceSetContainer
import org.gradle.api.tasks.testing.Test
import org.gradle.kotlin.dsl.*
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.register
import org.gradle.kotlin.dsl.the
import org.gradle.kotlin.dsl.withType
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
import org.gradle.testing.jacoco.tasks.JacocoReport

Expand Down
5 changes: 3 additions & 2 deletions sonar/src/test/resources/DemoTest.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
public class DemoTest {
@Test
public void shouldBeEven() {
assertEquals(true, 4 % 2 == 0);
}
}
}
16 changes: 13 additions & 3 deletions sonatype/src/main/kotlin/com/bakdata/gradle/SonatypePlugin.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* The MIT License
*
* Copyright (c) 2025 bakdata GmbH
* Copyright (c) 2026 bakdata GmbH
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -39,7 +39,16 @@ import org.gradle.api.publish.maven.tasks.AbstractPublishToMaven
import org.gradle.api.publish.maven.tasks.GenerateMavenPom
import org.gradle.api.publish.maven.tasks.PublishToMavenLocal
import org.gradle.api.tasks.bundling.Jar
import org.gradle.kotlin.dsl.*
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.extra
import org.gradle.kotlin.dsl.findByType
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.named
import org.gradle.kotlin.dsl.the
import org.gradle.kotlin.dsl.withType
import org.gradle.plugins.signing.Sign
import org.gradle.plugins.signing.SigningExtension
import java.net.URI
Expand Down Expand Up @@ -231,7 +240,8 @@ class SonatypePlugin : Plugin<Project> {
withJavadocJar()
}

project.tasks.matching { it.name == "dokkaJavadoc" }.all {
// Dokka v1 uses dokkaJavadoc, Dokka v2 uses dokkaGeneratePublicationJavadoc
project.tasks.matching { it.name == "dokkaJavadoc" || it.name == "dokkaGeneratePublicationJavadoc" }.all {
Comment thread
philipp94831 marked this conversation as resolved.
val javadocTask: Task = this
tasks.named<Jar>("javadocJar") {
from(javadocTask)
Expand Down
137 changes: 136 additions & 1 deletion sonatype/src/test/kotlin/com/bakdata/gradle/SonatypePluginIT.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@
package com.bakdata.gradle

import com.github.tomakehurst.wiremock.WireMockServer
import com.github.tomakehurst.wiremock.client.WireMock.*
import com.github.tomakehurst.wiremock.client.WireMock.get
import com.github.tomakehurst.wiremock.client.WireMock.ok
import com.github.tomakehurst.wiremock.client.WireMock.okJson
import com.github.tomakehurst.wiremock.client.WireMock.okXml
import com.github.tomakehurst.wiremock.client.WireMock.post
import com.github.tomakehurst.wiremock.client.WireMock.put
import com.github.tomakehurst.wiremock.client.WireMock.urlMatching
import com.github.tomakehurst.wiremock.http.RequestMethod
import com.github.tomakehurst.wiremock.stubbing.Scenario.STARTED
import groovy.json.StringEscapeUtils
Expand Down Expand Up @@ -361,6 +367,135 @@ internal class SonatypePluginIT {
assertThat(getUploadedFilesInGroup(wiremock)).containsExactlyInAnyOrderElementsOf(expectedUploads)
}

@Test
fun testDokka2Project(@TempDir testProjectDir: Path, @Wiremock wiremock: WireMockServer) {
Files.writeString(testProjectDir.resolve("build.gradle.kts"), """
plugins {
id("java")
id("com.bakdata.sonatype")
id("org.gradle.kotlin.kotlin-dsl") version "6.6.4"
id("org.jetbrains.dokka-javadoc") version "2.2.0"
}
repositories {
mavenCentral()
}
group = "$TEST_GROUP"
version = "$TEST_VERSION"
configure<com.bakdata.gradle.SonatypeSettings> {
disallowLocalRelease = false
osshrUsername = "dummy user"
osshrPassword = "dummy pw"
signingKeyId = "72217EAF"
signingPassword = "test_password"
signingSecretKeyRingFile = "${getSecringFile()}"
nexusUrl = "${wiremock.baseUrl()}"
allowInsecureProtocol = true
}
configure<com.bakdata.gradle.PublicationSettings> {
description = "dummy description"
developers {
developer {
name.set("dummy name")
id.set("dummy id")
}
}
}
""".trimIndent())

Files.createDirectories(testProjectDir.resolve("src/main/kotlin/"))
Files.copy(SonatypePluginIT::class.java.getResourceAsStream("/Demo.kt"),
testProjectDir.resolve("src/main/kotlin/Demo.kt"))

mockNexusProtocol(wiremock)

val result = GradleRunner.create()
.withProjectDir(testProjectDir.toFile())
.withArguments("publishToNexus", "closeAndReleaseStagingRepositories", "--stacktrace", "--info")
.withPluginClasspath()
.build()

SoftAssertions.assertSoftly { softly ->
softly.assertThat(result.tasks)
.haveExactly(1, taskWithPathAndOutcome(":signSonatypePublication", TaskOutcome.SUCCESS))
.haveExactly(1, taskWithPathAndOutcome(":publishSonatypePublicationToNexusRepository", TaskOutcome.SUCCESS))
.haveExactly(1, taskWithPathAndOutcome(":closeAndReleaseStagingRepositories", TaskOutcome.SUCCESS))
}

val projectName = testProjectDir.fileName.toString()
val expectedUploads = listOf(".jar", ".pom", "-javadoc.jar", "-sources.jar", ".module")
.map { classifier -> "$projectName/$TEST_VERSION/$projectName-$TEST_VERSION$classifier" }
.flatMap { baseFile -> listOf(baseFile, "$baseFile.asc") }
.plus("$projectName/maven-metadata.xml")
.flatMap { file -> listOf(file, "$file.md5", "$file.sha1", "$file.sha256", "$file.sha512") }
.flatMap { file -> listOf(file, file) } //FIXME somehow elements are uploaded twice
assertThat(getUploadedFilesInGroup(wiremock)).containsExactlyInAnyOrderElementsOf(expectedUploads)
Comment thread
philipp94831 marked this conversation as resolved.
}

@Test
fun testDokka1Project(@TempDir testProjectDir: Path, @Wiremock wiremock: WireMockServer) {
Files.writeString(testProjectDir.resolve("build.gradle.kts"), """
plugins {
id("java")
id("com.bakdata.sonatype")
id("org.gradle.kotlin.kotlin-dsl") version "6.6.4"
// V1 is enabled by default
id("org.jetbrains.dokka") version "2.0.0"
}
repositories {
mavenCentral()
}
group = "$TEST_GROUP"
version = "$TEST_VERSION"
configure<com.bakdata.gradle.SonatypeSettings> {
disallowLocalRelease = false
osshrUsername = "dummy user"
osshrPassword = "dummy pw"
signingKeyId = "72217EAF"
signingPassword = "test_password"
signingSecretKeyRingFile = "${getSecringFile()}"
nexusUrl = "${wiremock.baseUrl()}"
allowInsecureProtocol = true
}
configure<com.bakdata.gradle.PublicationSettings> {
description = "dummy description"
developers {
developer {
name.set("dummy name")
id.set("dummy id")
}
}
}
""".trimIndent())

Files.createDirectories(testProjectDir.resolve("src/main/kotlin/"))
Files.copy(SonatypePluginIT::class.java.getResourceAsStream("/Demo.kt"),
testProjectDir.resolve("src/main/kotlin/Demo.kt"))

mockNexusProtocol(wiremock)

val result = GradleRunner.create()
.withProjectDir(testProjectDir.toFile())
.withArguments("publishToNexus", "closeAndReleaseStagingRepositories", "--stacktrace", "--info")
.withPluginClasspath()
.build()

SoftAssertions.assertSoftly { softly ->
softly.assertThat(result.tasks)
.haveExactly(1, taskWithPathAndOutcome(":signSonatypePublication", TaskOutcome.SUCCESS))
.haveExactly(1, taskWithPathAndOutcome(":publishSonatypePublicationToNexusRepository", TaskOutcome.SUCCESS))
.haveExactly(1, taskWithPathAndOutcome(":closeAndReleaseStagingRepositories", TaskOutcome.SUCCESS))
}

val projectName = testProjectDir.fileName.toString()
val expectedUploads = listOf(".jar", ".pom", "-javadoc.jar", "-sources.jar", ".module")
.map { classifier -> "$projectName/$TEST_VERSION/$projectName-$TEST_VERSION$classifier" }
.flatMap { baseFile -> listOf(baseFile, "$baseFile.asc") }
.plus("$projectName/maven-metadata.xml")
.flatMap { file -> listOf(file, "$file.md5", "$file.sha1", "$file.sha256", "$file.sha512") }
.flatMap { file -> listOf(file, file) } //FIXME somehow elements are uploaded twice
assertThat(getUploadedFilesInGroup(wiremock)).containsExactlyInAnyOrderElementsOf(expectedUploads)
}

private fun getSecringFile(): String? =
StringEscapeUtils.escapeJava(
File(
Expand Down
5 changes: 5 additions & 0 deletions sonatype/src/test/resources/Demo.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
public class Demo {
fun isEven(num: Int): Boolean {
return num % 2 == 0
}
}
Loading