George
08/27/2022, 5:20 PMGeorge
08/27/2022, 5:21 PMfun Project.configureSdkPublication() {
if (!isSdk) return
plugins.withId("maven-publish") {
extensions.configure<PublishingExtension> {
repositories {
configureMavenPublication(this@repositories)
}
// check for dokka
if (plugins.findPlugin("org.jetbrains.dokka") != null) {
val dokkaJavadocJar by tasks.register<Jar>("dokkaJavadocJar") {
dependsOn(tasks["dokkaJavadoc"])
from(tasks["dokkaJavadoc"].outputs)
archiveClassifier.set("javadoc")
}
val dokkaHtmlJar by tasks.register<Jar>("dokkaHtmlJar") {
dependsOn(tasks["dokkaHtml"])
from(tasks["dokkaHtml"].outputs)
archiveClassifier.set("html-doc")
}
publications {
create<MavenPublication>("maven") {
pom {
configureMavenCentralMetadata(this@configureSdkPublication)
}
from(components["java"])
artifact(dokkaJavadocJar)
artifact(dokkaHtmlJar)
}
}
} else {
val sourcesJar by tasks.registering(org.gradle.api.tasks.bundling.Jar::class) {
archiveClassifier.set("sources")
}
publications {
create<MavenPublication>("maven") {
pom {
configureMavenCentralMetadata(this@configureSdkPublication)
}
from(components["java"])
artifact(sourcesJar.get())
}
}
}
}
}
}
Info: calling it in 3 of my modules, which two of them will have kdocs.
Module gradle.build example:
plugins {
kotlin("jvm")
kotlin("plugin.serialization")
`maven-publish`
`java-library`
id("org.jetbrains.dokka")
}
val kotlinxCoroutinesVersion: String by project
val kotlinxSerializationVersion: String by project
dependencies {
compileOnly(kotlin("reflect"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$kotlinxSerializationVersion")
}
configureSdkPublication()
I publish my lib in gitlab packageRegistry and i can see there is also a javadoc.jar the corresponding modules but still the consumer does not downloads it.George
08/30/2022, 5:28 PMjava {
withJavadocJar()
withSourcesJar()
}
worked with minimal configuration.