diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FireEscapeArtifactPlugin.java b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FireEscapeArtifactPlugin.java
deleted file mode 100644
index 815897103fb..00000000000
--- a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FireEscapeArtifactPlugin.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.firebase.gradle.plugins;
-
-import java.io.File;
-import org.gradle.api.Plugin;
-import org.gradle.api.Project;
-import org.gradle.api.Task;
-import org.gradle.api.publish.PublishingExtension;
-import org.gradle.api.publish.maven.MavenPublication;
-import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
-import org.gradle.api.tasks.bundling.Jar;
-import org.gradle.api.tasks.bundling.Zip;
-
-/**
- * Injects release related artifact into the maven publication.
- *
- *
The artifact contains the following files in it:
- *
- *
- * - api-diff.txt
- *
- api.txt
- *
- mapping.txt(optional,only present if library is proguarded)
- *
- */
-public class FireEscapeArtifactPlugin implements Plugin {
- private Project project;
-
- @Override
- public void apply(Project project) {
- this.project = project;
- project.afterEvaluate(
- p -> {
- FirebaseLibraryExtension firebaseLibrary =
- p.getExtensions().findByType(FirebaseLibraryExtension.class);
- if (firebaseLibrary == null) {
- return;
- }
-
- Zip fireEscapeTask =
- p.getTasks()
- .create(
- "mavenAarFireEscapeArtifact", Zip.class, t -> t.setClassifier("fireescape"));
-
- p.getPlugins()
- .withType(
- MavenPublishPlugin.class,
- plugin ->
- p.getExtensions()
- .configure(
- PublishingExtension.class,
- pub ->
- pub.getPublications()
- .withType(
- MavenPublication.class,
- publication -> {
- if ("mavenAar".equals(publication.getName())) {
- configurePublication(
- publication,
- fireEscapeTask,
- firebaseLibrary.type);
- }
- })));
- });
- }
-
- private void configurePublication(
- MavenPublication publication, Zip artifactTask, LibraryType libraryType) {
- publication.artifact(artifactTask);
- artifactTask.from(apiTxtFileTask());
- if (libraryType.equals(LibraryType.ANDROID)) {
- artifactTask.from(proguardMappingFileTask());
- }
- publication.artifact(javadocTask());
- }
-
- private Task proguardMappingFileTask() {
- return project
- .getTasks()
- .create(
- "fireEscapeProguardMapping",
- task -> {
- project
- .getTasks()
- .all(
- it -> {
- if (it.getName().equals("assembleRelease")) {
- task.dependsOn(it);
- }
- });
- task.getOutputs()
- .file(new File(project.getBuildDir(), "outputs/mapping/release/mapping.txt"));
- });
- }
-
- private Task apiTxtFileTask() {
- return project
- .getTasks()
- .create(
- "fireEscapeApiTxt",
- task -> {
- task.dependsOn(TasksKt.JAVADOC_TASK_NAME);
- task.getOutputs().file(new File(project.getBuildDir(), "tmp/javadoc/api.txt"));
- });
- }
-
- private Task javadocTask() {
- return project
- .getTasks()
- .create(
- "fireescapeJavadocJar",
- Jar.class,
- javadoc -> {
- javadoc.dependsOn(TasksKt.JAVADOC_TASK_NAME);
- javadoc.from(new File(project.getBuildDir(), "/docs/javadoc/reference"));
- javadoc.include("**/*");
- javadoc.setArchiveName("fireescape-javadoc.jar");
- javadoc.setClassifier("javadoc");
- });
- }
-}
diff --git a/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FireEscapeArtifactPlugin.kt b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FireEscapeArtifactPlugin.kt
new file mode 100644
index 00000000000..dd53d7b52f4
--- /dev/null
+++ b/buildSrc/src/main/java/com/google/firebase/gradle/plugins/FireEscapeArtifactPlugin.kt
@@ -0,0 +1,78 @@
+// Copyright 2023 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.firebase.gradle.plugins
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.Task
+import org.gradle.api.publish.PublishingExtension
+import org.gradle.api.publish.maven.MavenPublication
+import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
+import org.gradle.api.tasks.TaskProvider
+import org.gradle.api.tasks.bundling.Jar
+import org.gradle.api.tasks.bundling.Zip
+import org.gradle.kotlin.dsl.configure
+import org.gradle.kotlin.dsl.getByName
+import org.gradle.kotlin.dsl.register
+
+class FireEscapeArtifactPlugin : Plugin {
+
+ override fun apply(target: Project) {
+ target.afterEvaluate {
+ if (supportsMavenPublishing(target)) {
+ val apiTxtFile = registerApiTxtFileTask(project)
+ val proguardMappingFile = registerProguardMappingFileTask(project)
+ val javadoc = registerJavadocTask(project)
+
+ val zippedArtifact =
+ project.tasks.register("maven") {
+ from(apiTxtFile)
+ if (project.isAndroid()) {
+ from(proguardMappingFile)
+ }
+ }
+
+ extensions.configure {
+ publications.getByName("mavenAar") {
+ artifact(zippedArtifact)
+ artifact(javadoc)
+ }
+ }
+ }
+ }
+ }
+ private fun supportsMavenPublishing(project: Project): Boolean =
+ project.plugins.hasPlugin(MavenPublishPlugin::class.java)
+
+ private fun registerProguardMappingFileTask(project: Project): TaskProvider =
+ project.tasks.register("fireEscapeProguardMapping") {
+ outputs.file(project.fileFromBuildDir("outputs/mapping/release/mapping.txt"))
+ }
+
+ private fun registerApiTxtFileTask(project: Project): TaskProvider =
+ project.tasks.register("fireEscapeApiText") {
+ dependsOn(JAVADOC_TASK_NAME)
+ outputs.file(project.fileFromBuildDir("tmp/javadoc/api.txt"))
+ }
+
+ private fun registerJavadocTask(project: Project): TaskProvider =
+ project.tasks.register("fireescapeJavadocJar") {
+ dependsOn(JAVADOC_TASK_NAME)
+ project.fileFromBuildDir("/docs/javadoc/reference")
+ include("**/*")
+ archiveFileName.set("fireescape-javadoc.jar")
+ archiveClassifier.set("javadoc")
+ }
+}