Generate and publish Javadoc
diff --git a/api/build.gradle.kts b/api/build.gradle.kts
index dc9a340..a084c78 100644
--- a/api/build.gradle.kts
+++ b/api/build.gradle.kts
@@ -9,6 +9,7 @@
 plugins {
     kotlin("jvm")
     `maven-publish`
+    id("org.jetbrains.dokka") version ("1.4.32")
 }
 
 tasks {
@@ -16,11 +17,12 @@
         archiveClassifier.set("sources")
         from(sourceSets.main.get().allSource)
     }
+}
 
-    artifacts {
-        archives(sourcesJar)
-        archives(jar)
-    }
+val dokkaJavadocJar by tasks.register<Jar>("dokkaJavadocJar") {
+    dependsOn(tasks.dokkaJavadoc)
+    from(tasks.dokkaJavadoc.flatMap { it.outputDirectory })
+    archiveClassifier.set("javadoc")
 }
 
 publishing {
@@ -29,6 +31,7 @@
             artifactId = "symbol-processing-api"
             from(components["java"])
             artifact(tasks["sourcesJar"])
+            artifact(tasks["dokkaJavadocJar"])
             pom {
                 name.set("com.google.devtools.ksp:symbol-processing-api")
                 description.set("Symbol processing for Kotlin")
diff --git a/compiler-plugin/build.gradle.kts b/compiler-plugin/build.gradle.kts
index 2905942..300e261 100644
--- a/compiler-plugin/build.gradle.kts
+++ b/compiler-plugin/build.gradle.kts
@@ -17,6 +17,7 @@
 plugins {
     kotlin("jvm")
     id("org.jetbrains.intellij") version "0.6.4"
+    id("org.jetbrains.dokka") version ("1.4.32")
 }
 
 intellij {
@@ -133,3 +134,9 @@
     maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap/")
     maven("https://www.jetbrains.com/intellij-repository/snapshots")
 }
+
+val dokkaJavadocJar by tasks.register<Jar>("dokkaJavadocJar") {
+    dependsOn(tasks.dokkaJavadoc)
+    from(tasks.dokkaJavadoc.flatMap { it.outputDirectory })
+    archiveClassifier.set("javadoc")
+}
diff --git a/gradle-plugin/build.gradle.kts b/gradle-plugin/build.gradle.kts
index 6776853..ae720c9 100644
--- a/gradle-plugin/build.gradle.kts
+++ b/gradle-plugin/build.gradle.kts
@@ -15,6 +15,7 @@
     kotlin("jvm")
     id("java-gradle-plugin")
     `maven-publish`
+    id("org.jetbrains.dokka") version ("1.4.32")
 }
 
 dependencies {
@@ -56,6 +57,11 @@
     }
 }
 
+val dokkaJavadocJar by tasks.register<Jar>("dokkaJavadocJar") {
+    dependsOn(tasks.dokkaJavadoc)
+    from(tasks.dokkaJavadoc.flatMap { it.outputDirectory })
+    archiveClassifier.set("javadoc")
+}
 
 publishing {
     publications {
@@ -64,6 +70,7 @@
         this.create<MavenPublication>("pluginMaven") {
             artifactId = "symbol-processing-gradle-plugin"
             artifact(tasks["sourcesJar"])
+            artifact(tasks["dokkaJavadocJar"])
             pom {
                 name.set("symbol-processing-gradle-plugin")
                 description.set("Kotlin symbol processing integration for Gradle")
diff --git a/symbol-processing/build.gradle.kts b/symbol-processing/build.gradle.kts
index 876b18a..736ca9b 100644
--- a/symbol-processing/build.gradle.kts
+++ b/symbol-processing/build.gradle.kts
@@ -25,17 +25,13 @@
 tasks {
     publish {
         dependsOn(shadowJar)
+        dependsOn(project(":compiler-plugin:dokkaJavadocJar"))
     }
 
     val sourcesJar by creating(Jar::class) {
         archiveClassifier.set("sources")
         from(project(":compiler-plugin").sourceSets.main.get().allSource)
     }
-
-    artifacts {
-        archives(sourcesJar)
-        archives(jar)
-    }
 }
 
 publishing {
@@ -43,6 +39,7 @@
         create<MavenPublication>("shadow") {
             artifactId = "symbol-processing"
             artifact(tasks["sourcesJar"])
+            artifact(project(":compiler-plugin").tasks["dokkaJavadocJar"])
             artifact(tasks["shadowJar"])
             pom {
                 name.set("com.google.devtools.ksp:symbol-processing")
@@ -72,6 +69,7 @@
         create<MavenPublication>("cmdline") {
             artifactId = "symbol-processing-cmdline"
             artifact(tasks["sourcesJar"])
+            artifact(project(":compiler-plugin").tasks["dokkaJavadocJar"])
             from(project(":compiler-plugin").components["java"])
             pom {
                 name.set("com.google.devtools.ksp:symbol-processing-cmdline")