@@ -81,6 +81,8 @@ abstract class PublishingPlugin : Plugin<Project> {
81
81
registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
82
82
val validateProjectsToPublish =
83
83
registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries)
84
+ val validateLibraryGroupsToPublish =
85
+ registerValidateLibraryGroupsToPublishTask(project, releasingFirebaseLibraries)
84
86
val publishReleasingLibrariesToBuildDir =
85
87
registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
86
88
val generateKotlindocsForRelease =
@@ -128,6 +130,7 @@ abstract class PublishingPlugin : Plugin<Project> {
128
130
project.tasks.register(FIREBASE_PUBLISH_TASK ) {
129
131
dependsOn(
130
132
validateProjectsToPublish,
133
+ validateLibraryGroupsToPublish,
131
134
checkHeadDependencies,
132
135
// validatePomForRelease, TODO(b/279466888) - Make GmavenHelper testable
133
136
buildMavenZip,
@@ -299,6 +302,29 @@ abstract class PublishingPlugin : Plugin<Project> {
299
302
}
300
303
}
301
304
305
+ /* *
306
+ * Registers the [VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK] task.
307
+ *
308
+ * Validates that all library groups of all publishing projects are included in the release config
309
+ *
310
+ * @throws GradleException if a library is releasing without it's library group.
311
+ */
312
+ private fun registerValidateLibraryGroupsToPublishTask (
313
+ project : Project ,
314
+ releasinglibraries : List <FirebaseLibraryExtension >
315
+ ) =
316
+ project.tasks.register(VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK ) {
317
+ doLast {
318
+ val libraryGroupProjects = releasinglibraries.flatMap { it.librariesToRelease }
319
+ val missingProjects = libraryGroupProjects - releasinglibraries
320
+ if (missingProjects.isNotEmpty()) {
321
+ throw GradleException (
322
+ " Some libraries in library groups are not in the release: ${missingProjects.map { it.mavenName }} "
323
+ )
324
+ }
325
+ }
326
+ }
327
+
302
328
/* *
303
329
* Registers the [PUBLISH_RELEASING_LIBS_TO_BUILD_TASK] task.
304
330
*
@@ -475,6 +501,7 @@ abstract class PublishingPlugin : Plugin<Project> {
475
501
476
502
const val GENERATE_BOM_TASK = " generateBom"
477
503
const val VALIDATE_PROJECTS_TO_PUBLISH_TASK = " validateProjectsToPublish"
504
+ const val VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK = " validateLGsToPublish"
478
505
const val SEMVER_CHECK_TASK = " semverCheckForRelease"
479
506
const val RELEASE_GENEATOR_TASK = " generateReleaseConfig"
480
507
const val VALIDATE_POM_TASK = " validatePomForRelease"
0 commit comments