Skip to content

Commit 2ebb543

Browse files
committed
feat: clean plugin build before to escape older build from being added to merged metadata
1 parent 1a89ce5 commit 2ebb543

3 files changed

Lines changed: 32 additions & 9 deletions

File tree

plugin/src/main/java/com/icst/plugin/builder/PluginTaskRegistrar.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,28 @@
1919

2020
import org.gradle.api.Project;
2121
import org.gradle.api.file.DirectoryProperty;
22+
import org.gradle.api.tasks.Delete;
2223

2324
public class PluginTaskRegistrar {
2425

2526
public static void register(Project project) {
26-
project.getTasks().register("buildPlugin", task -> {
27-
task.setGroup("block-idle");
28-
task.setDescription("Build all debug plugin variants and generates ready to publish plugin");
29-
});
30-
3127
DirectoryProperty buildDir = project.getLayout().getBuildDirectory();
3228

29+
project.getTasks().register("cleanPluginOutputs", Delete.class, t -> {
30+
t.delete(buildDir.dir("outputs/plugin"));
31+
});
32+
3333
project.getTasks().register("mergePluginMetadata", MergePluginMetadataTask.class, t -> {
3434
t.getInputDir().set(buildDir.dir("outputs/plugin"));
3535
t.getOutputFile().set(buildDir.file("outputs/plugin/plugin-metadata.json"));
36+
t.dependsOn("cleanPluginOutputs");
37+
t.mustRunAfter("cleanPluginOutputs");
3638
});
37-
project.getTasks().named("buildPlugin").configure(t -> t.dependsOn("mergePluginMetadata"));
38-
}
3939

40+
project.getTasks().register("buildPlugin", task -> {
41+
task.setGroup("block-idle");
42+
task.setDescription("Build all debug plugin variants and generates ready to publish plugin");
43+
task.dependsOn("mergePluginMetadata");
44+
});
45+
}
4046
}

plugin/src/main/java/com/icst/plugin/builder/PluginTaskWiring.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ public class PluginTaskWiring {
2525

2626
public static void wire(Project project, Variant variant) {
2727
String taskName = "buildPlugin" + Utilities.capitalize(variant.getName());
28+
String cleanTaskName = "cleanPlugin" + Utilities.capitalize(variant.getName());
2829
project.getTasks().named("mergePluginMetadata").configure(t -> t.dependsOn(taskName));
30+
project.getTasks().named(taskName).configure(t -> {
31+
t.dependsOn(cleanTaskName);
32+
t.mustRunAfter(cleanTaskName);
33+
});
2934
}
3035

3136
}

plugin/src/main/java/com/icst/plugin/builder/PluginVariantTaskFactory.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.gradle.api.file.DirectoryProperty;
2525
import org.gradle.api.file.RegularFile;
2626
import org.gradle.api.provider.Provider;
27+
import org.gradle.api.tasks.Delete;
2728

2829
import com.android.build.api.artifact.SingleArtifact;
2930
import com.android.build.api.variant.ApplicationVariant;
@@ -35,11 +36,22 @@ public class PluginVariantTaskFactory {
3536
private static final String PLUGIN_METADATA_FILE = "plugin-metadata.json";
3637

3738
public static void create(Project project, Variant variant) {
38-
String taskName = "buildPlugin" + Utilities.capitalize(variant.getName());
39+
String buildTaskName = "buildPlugin" + Utilities.capitalize(variant.getName());
3940

40-
project.getTasks().register(taskName, BuildPluginTask.class, task -> {
41+
project.getTasks().register(buildTaskName, BuildPluginTask.class, task -> {
4142
registerBuildTaskForVariant(project, variant, task);
4243
});
44+
45+
String cleanTaskName = "cleanPlugin" + Utilities.capitalize(variant.getName());
46+
47+
project.getTasks().register(cleanTaskName, Delete.class, t -> {
48+
DirectoryProperty buildDir = project.getLayout().getBuildDirectory();
49+
StringBuilder apkOutputDirPath = new StringBuilder(PLUGIN_OUTPUT_DIR);
50+
apkOutputDirPath.append("/");
51+
apkOutputDirPath.append(variant.getName());
52+
53+
t.delete(buildDir.dir(apkOutputDirPath.toString()));
54+
});
4355
}
4456

4557
private static void registerBuildTaskForVariant(Project project, Variant variant, BuildPluginTask task) {

0 commit comments

Comments
 (0)