Skip to content

Commit cbaa348

Browse files
authored
chore: Fix build (#139)
* Fix build * Comment
1 parent 14634be commit cbaa348

4 files changed

Lines changed: 17 additions & 34 deletions

File tree

.github/workflows/publish-sonatype.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ jobs:
3636
export -- GPG_SIGNING_KEY_ID
3737
printenv -- GPG_SIGNING_KEY | gpg --batch --passphrase-fd 3 --import 3<<< "$GPG_SIGNING_PASSWORD"
3838
GPG_SIGNING_KEY_ID="$(gpg --with-colons --list-keys | awk -F : -- '/^pub:/ { getline; print "0x" substr($10, length($10) - 7) }')"
39-
# Gradle 9 + Dokka: parallel project execution can trigger "resolution without an exclusive lock"
40-
# on dokkaJavadocCollector; --no-parallel avoids that (see gradle/gradle#34473).
39+
# Keep publish execution serial to avoid Gradle/Dokka task graph race conditions.
4140
./gradlew publishAndReleaseToMavenCentral --stacktrace -PmavenCentralUsername="$SONATYPE_USERNAME" -PmavenCentralPassword="$SONATYPE_PASSWORD" --no-configuration-cache --no-parallel
4241
env:
4342
SONATYPE_USERNAME: ${{ secrets.LANGCHAIN_SONATYPE_USERNAME || secrets.SONATYPE_USERNAME }}

build.gradle.kts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("org.jetbrains.dokka") version "2.2.0"
3+
id("org.jetbrains.dokka-javadoc") version "2.2.0"
34
}
45

56
repositories {
@@ -22,15 +23,5 @@ subprojects {
2223
description = "Verifies all source files are formatted."
2324
}
2425
apply(plugin = "org.jetbrains.dokka")
25-
}
26-
27-
subprojects {
28-
apply(plugin = "org.jetbrains.dokka")
29-
}
30-
31-
// Avoid race conditions between `dokkaJavadocCollector` and `dokkaJavadocJar` tasks
32-
tasks.named("dokkaJavadocCollector").configure {
33-
subprojects.flatMap { it.tasks }
34-
.filter { it.project.name != "langsmith-java" && it.name == "dokkaJavadocJar" }
35-
.forEach { mustRunAfter(it) }
26+
apply(plugin = "org.jetbrains.dokka-javadoc")
3627
}

buildSrc/src/main/kotlin/langchain.publish.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import com.vanniktech.maven.publish.JavadocJar
22
import com.vanniktech.maven.publish.KotlinJvm
33
import com.vanniktech.maven.publish.MavenPublishBaseExtension
4+
import com.vanniktech.maven.publish.SourcesJar
45

56
plugins {
67
id("com.vanniktech.maven.publish")
@@ -35,8 +36,8 @@ configure<MavenPublishBaseExtension> {
3536
coordinates(project.group.toString(), project.name, project.version.toString())
3637
configure(
3738
KotlinJvm(
38-
javadocJar = JavadocJar.Dokka("dokkaJavadoc"),
39-
sourcesJar = true,
39+
javadocJar = JavadocJar.Dokka("dokkaGeneratePublicationJavadoc"),
40+
sourcesJar = SourcesJar.Sources(),
4041
)
4142
)
4243

langsmith-java/build.gradle.kts

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,15 @@ dependencies {
77
api(project(":langsmith-java-client-okhttp"))
88
}
99

10-
// Redefine `dokkaJavadoc` to:
11-
// - Depend on the root project's task for merging the docs of all the projects
12-
// - Forward that task's output to this task's output
13-
tasks.named("dokkaJavadoc").configure {
14-
actions.clear()
15-
16-
val dokkaJavadocCollector = rootProject.tasks["dokkaJavadocCollector"]
17-
dependsOn(dokkaJavadocCollector)
18-
19-
val outputDirectory = project.layout.buildDirectory.dir("dokka/javadoc")
20-
doLast {
21-
copy {
22-
from(dokkaJavadocCollector.outputs.files)
23-
into(outputDirectory)
24-
duplicatesStrategy = DuplicatesStrategy.INCLUDE
25-
}
26-
}
27-
28-
outputs.dir(outputDirectory)
10+
// The umbrella `langsmith-java` artifact contains no source of its own, but we still publish a
11+
// Javadoc JAR containing the docs for the modules it re-exports.
12+
tasks.named<org.gradle.jvm.tasks.Jar>("dokkaJavadocJar").configure {
13+
val reexportedProjects = setOf("langsmith-java-client-okhttp", "langsmith-java-core")
14+
val subprojectJavadocTasks =
15+
rootProject.subprojects
16+
.filter { it.name in reexportedProjects }
17+
.map { it.tasks.named("dokkaGeneratePublicationJavadoc") }
18+
dependsOn(subprojectJavadocTasks)
19+
subprojectJavadocTasks.forEach { from(it) }
20+
duplicatesStrategy = DuplicatesStrategy.INCLUDE
2921
}

0 commit comments

Comments
 (0)