Skip to content

Commit c4f03b6

Browse files
authored
Create Gradle cache-compliant metalava tasks. (#3994)
* Create Gradle cache-compliant metalava tasks. The original tasks were not properly cacheable and will fail validation in future Gradle versions. * Upgrade metalava. * fix check
1 parent d82eaa0 commit c4f03b6

File tree

29 files changed

+215
-494
lines changed

29 files changed

+215
-494
lines changed

appcheck/firebase-appcheck/ktx/api.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
package com.google.firebase.appcheck.ktx {
33

44
public final class FirebaseAppCheckKt {
5-
ctor public FirebaseAppCheckKt();
65
method @NonNull public static com.google.firebase.appcheck.FirebaseAppCheck appCheck(@NonNull com.google.firebase.ktx.Firebase, @NonNull com.google.firebase.FirebaseApp app);
76
method @NonNull public static operator String component1(@NonNull com.google.firebase.appcheck.AppCheckToken);
87
method public static operator long component2(@NonNull com.google.firebase.appcheck.AppCheckToken);

buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.java

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
import com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormatExtension;
1818
import com.google.common.collect.ImmutableList;
1919
import com.google.common.collect.ImmutableMap;
20-
import com.google.firebase.gradle.plugins.apiinfo.ApiInformationTask;
21-
import com.google.firebase.gradle.plugins.apiinfo.GenerateApiTxtFileTask;
22-
import com.google.firebase.gradle.plugins.apiinfo.GetMetalavaJarTask;
2320
import com.google.firebase.gradle.plugins.ci.Coverage;
2421
import java.io.File;
2522
import java.nio.file.Paths;
@@ -92,7 +89,6 @@ private static void setupStaticAnalysis(Project project, FirebaseLibraryExtensio
9289
}
9390

9491
private static void setupApiInformationAnalysis(Project project) {
95-
File metalavaOutputJarFile = new File(project.getRootProject().getBuildDir(), "metalava.jar");
9692
SourceSet mainSourceSet =
9793
project
9894
.getConvention()
@@ -109,15 +105,6 @@ private static void setupApiInformationAnalysis(Project project) {
109105
project.getPath().substring(1).replace(":", "_")));
110106
File outputApiFile = new File(outputFile.getAbsolutePath() + "_api.txt");
111107

112-
project
113-
.getTasks()
114-
.register(
115-
"getMetalavaJar",
116-
GetMetalavaJarTask.class,
117-
task -> {
118-
task.setOutputFile(metalavaOutputJarFile);
119-
});
120-
121108
File apiTxt =
122109
project.file("api.txt").exists()
123110
? project.file("api.txt")
@@ -129,33 +116,27 @@ private static void setupApiInformationAnalysis(Project project) {
129116
"apiInformation",
130117
ApiInformationTask.class,
131118
task -> {
132-
task.setApiTxt(apiTxt);
133-
task.setMetalavaJarPath(metalavaOutputJarFile.getAbsolutePath());
134-
task.setSourceSet(mainSourceSet);
135-
task.setOutputFile(outputFile);
136-
task.setBaselineFile(project.file("baseline.txt"));
137-
task.setOutputApiFile(outputApiFile);
138-
if (project.hasProperty("updateBaseline")) {
139-
task.setUpdateBaseline(true);
140-
} else {
141-
task.setUpdateBaseline(false);
142-
}
143-
task.dependsOn("getMetalavaJar");
119+
task.getSources()
120+
.value(project.provider(() -> mainSourceSet.getJava().getSrcDirs()));
121+
task.getApiTxtFile().set(apiTxt);
122+
task.getBaselineFile().set(project.file("baseline.txt"));
123+
task.getOutputFile().set(outputFile);
124+
task.getOutputApiFile().set(outputApiFile);
125+
task.getUpdateBaseline().set(project.hasProperty("updateBaseline"));
144126
});
145127

146-
TaskProvider<GenerateApiTxtFileTask> generateApiTxt =
128+
TaskProvider<GenerateApiTxtTask> generateApiTxt =
147129
project
148130
.getTasks()
149131
.register(
150132
"generateApiTxtFile",
151-
GenerateApiTxtFileTask.class,
133+
GenerateApiTxtTask.class,
152134
task -> {
153-
task.setApiTxt(project.file("api.txt"));
154-
task.setMetalavaJarPath(metalavaOutputJarFile.getAbsolutePath());
155-
task.setSourceSet(mainSourceSet);
156-
task.setBaselineFile(project.file("baseline.txt"));
157-
task.setUpdateBaseline(project.hasProperty("updateBaseline"));
158-
task.dependsOn("getMetalavaJar");
135+
task.getSources()
136+
.value(project.provider(() -> mainSourceSet.getJava().getSrcDirs()));
137+
task.getApiTxtFile().set(project.file("api.txt"));
138+
task.getBaselineFile().set(project.file("baseline.txt"));
139+
task.getUpdateBaseline().set(project.hasProperty("updateBaseline"));
159140
});
160141

161142
TaskProvider<GenerateStubsTask> docStubs =
@@ -164,11 +145,9 @@ private static void setupApiInformationAnalysis(Project project) {
164145
.register(
165146
"docStubs",
166147
GenerateStubsTask.class,
167-
task -> {
168-
task.dependsOn("getMetalavaJar");
169-
170-
task.setSourceSet(mainSourceSet);
171-
});
148+
task ->
149+
task.getSources()
150+
.value(project.provider(() -> mainSourceSet.getJava().getSrcDirs())));
172151
project.getTasks().getByName("check").dependsOn(docStubs);
173152

174153
project.afterEvaluate(

buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.java

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@
2121
import com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormatExtension;
2222
import com.google.common.collect.ImmutableList;
2323
import com.google.common.collect.ImmutableMap;
24-
import com.google.firebase.gradle.plugins.apiinfo.ApiInformationTask;
25-
import com.google.firebase.gradle.plugins.apiinfo.GenerateApiTxtFileTask;
26-
import com.google.firebase.gradle.plugins.apiinfo.GetMetalavaJarTask;
2724
import com.google.firebase.gradle.plugins.ci.Coverage;
2825
import com.google.firebase.gradle.plugins.ci.device.FirebaseTestServer;
2926
import com.google.firebase.gradle.plugins.license.LicenseResolverPlugin;
@@ -116,7 +113,6 @@ public void apply(Project project) {
116113
}
117114

118115
private static void setupApiInformationAnalysis(Project project, LibraryExtension android) {
119-
File metalavaOutputJarFile = new File(project.getRootProject().getBuildDir(), "metalava.jar");
120116
AndroidSourceSet mainSourceSet = android.getSourceSets().getByName("main");
121117
File outputFile =
122118
project
@@ -128,14 +124,6 @@ private static void setupApiInformationAnalysis(Project project, LibraryExtensio
128124
project.getPath().substring(1).replace(":", "_")));
129125
File outputApiFile = new File(outputFile.getAbsolutePath() + "_api.txt");
130126

131-
project
132-
.getTasks()
133-
.register(
134-
"getMetalavaJar",
135-
GetMetalavaJarTask.class,
136-
task -> {
137-
task.setOutputFile(metalavaOutputJarFile);
138-
});
139127
File apiTxt =
140128
project.file("api.txt").exists()
141129
? project.file("api.txt")
@@ -147,33 +135,27 @@ private static void setupApiInformationAnalysis(Project project, LibraryExtensio
147135
"apiInformation",
148136
ApiInformationTask.class,
149137
task -> {
150-
task.setApiTxt(apiTxt);
151-
task.setMetalavaJarPath(metalavaOutputJarFile.getAbsolutePath());
152-
task.setSourceSet(mainSourceSet);
153-
task.setOutputFile(outputFile);
154-
task.setBaselineFile(project.file("baseline.txt"));
155-
task.setOutputApiFile(outputApiFile);
156-
if (project.hasProperty("updateBaseline")) {
157-
task.setUpdateBaseline(true);
158-
} else {
159-
task.setUpdateBaseline(false);
160-
}
161-
task.dependsOn("getMetalavaJar");
138+
task.getSources()
139+
.value(project.provider(() -> mainSourceSet.getJava().getSrcDirs()));
140+
task.getApiTxtFile().set(apiTxt);
141+
task.getBaselineFile().set(project.file("baseline.txt"));
142+
task.getOutputFile().set(outputFile);
143+
task.getOutputApiFile().set(outputApiFile);
144+
task.getUpdateBaseline().set(project.hasProperty("updateBaseline"));
162145
});
163146

164-
TaskProvider<GenerateApiTxtFileTask> generateApiTxt =
147+
TaskProvider<GenerateApiTxtTask> generateApiTxt =
165148
project
166149
.getTasks()
167150
.register(
168151
"generateApiTxtFile",
169-
GenerateApiTxtFileTask.class,
152+
GenerateApiTxtTask.class,
170153
task -> {
171-
task.setApiTxt(project.file("api.txt"));
172-
task.setMetalavaJarPath(metalavaOutputJarFile.getAbsolutePath());
173-
task.setSourceSet(mainSourceSet);
174-
task.setBaselineFile(project.file("baseline.txt"));
175-
task.setUpdateBaseline(project.hasProperty("updateBaseline"));
176-
task.dependsOn("getMetalavaJar");
154+
task.getSources()
155+
.value(project.provider(() -> mainSourceSet.getJava().getSrcDirs()));
156+
task.getApiTxtFile().set(project.file("api.txt"));
157+
task.getBaselineFile().set(project.file("baseline.txt"));
158+
task.getUpdateBaseline().set(project.hasProperty("updateBaseline"));
177159
});
178160

179161
TaskProvider<GenerateStubsTask> docStubs =
@@ -182,9 +164,9 @@ private static void setupApiInformationAnalysis(Project project, LibraryExtensio
182164
.register(
183165
"docStubs",
184166
GenerateStubsTask.class,
185-
task -> {
186-
task.setSourceSet(mainSourceSet);
187-
});
167+
task ->
168+
task.getSources()
169+
.value(project.provider(() -> mainSourceSet.getJava().getSrcDirs())));
188170
project.getTasks().getByName("check").dependsOn(docStubs);
189171

190172
android

0 commit comments

Comments
 (0)