Create `RootPlugin` to `configureGraphTasks()` on `subprojects`

pull/1953/head
Simon Marquis 2 weeks ago
parent c94e82849b
commit 5e34fb49c0

@ -114,5 +114,9 @@ gradlePlugin {
id = libs.plugins.nowinandroid.jvm.library.get().pluginId
implementationClass = "JvmLibraryConventionPlugin"
}
register("root") {
id = libs.plugins.nowinandroid.root.get().pluginId
implementationClass = "RootPlugin"
}
}
}

@ -18,7 +18,6 @@ import com.android.build.api.dsl.ApplicationExtension
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.google.samples.apps.nowinandroid.configureBadgingTasks
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
import com.google.samples.apps.nowinandroid.configureGraphTasks
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
import com.google.samples.apps.nowinandroid.configurePrintApksTask
import org.gradle.api.Plugin
@ -46,7 +45,6 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
configurePrintApksTask(this)
configureBadgingTasks(extensions.getByType<ApplicationExtension>(), this)
}
configureGraphTasks()
}
}
}

@ -18,7 +18,6 @@ import com.android.build.api.dsl.LibraryExtension
import com.android.build.api.variant.LibraryAndroidComponentsExtension
import com.google.samples.apps.nowinandroid.configureFlavors
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
import com.google.samples.apps.nowinandroid.configureGraphTasks
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
import com.google.samples.apps.nowinandroid.configurePrintApksTask
import com.google.samples.apps.nowinandroid.disableUnnecessaryAndroidTests
@ -60,7 +59,6 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
"implementation"(libs.findLibrary("androidx.tracing.ktx").get())
}
configureGraphTasks()
}
}
}

@ -16,7 +16,6 @@
import com.android.build.api.dsl.TestExtension
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
import com.google.samples.apps.nowinandroid.configureGraphTasks
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
import org.gradle.api.Plugin
import org.gradle.api.Project
@ -34,7 +33,6 @@ class AndroidTestConventionPlugin : Plugin<Project> {
defaultConfig.targetSdk = 35
configureGradleManagedDevices(this)
}
configureGraphTasks()
}
}
}

@ -14,7 +14,6 @@
* limitations under the License.
*/
import com.google.samples.apps.nowinandroid.configureGraphTasks
import com.google.samples.apps.nowinandroid.configureKotlinJvm
import com.google.samples.apps.nowinandroid.libs
import org.gradle.api.Plugin
@ -32,7 +31,6 @@ class JvmLibraryConventionPlugin : Plugin<Project> {
dependencies {
"testImplementation"(libs.findLibrary("kotlin.test").get())
}
configureGraphTasks()
}
}
}

@ -0,0 +1,26 @@
/*
* Copyright 2025 The Android Open Source Project
*
* 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
*
* https://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.
*/
import com.google.samples.apps.nowinandroid.configureGraphTasks
import org.gradle.api.Plugin
import org.gradle.api.Project
class RootPlugin : Plugin<Project> {
override fun apply(target: Project) {
require(target.path == ":")
target.subprojects { configureGraphTasks() }
}
}

@ -120,7 +120,7 @@ internal enum class PluginType(val id: String, val ref: String, val style: Strin
),
}
fun Project.configureGraphTasks() {
internal fun Project.configureGraphTasks() {
val dumpTask = tasks.register<GraphDumpTask>("graphDump") {
val graph = Graph(this@configureGraphTasks).invoke()
projectPath = this@configureGraphTasks.path

@ -38,4 +38,5 @@ plugins {
alias(libs.plugins.roborazzi) apply false
alias(libs.plugins.google.osslicenses) apply false
alias(libs.plugins.room) apply false
alias(libs.plugins.nowinandroid.root)
}

@ -194,3 +194,4 @@ nowinandroid-android-room = { id = "nowinandroid.android.room" }
nowinandroid-android-test = { id = "nowinandroid.android.test" }
nowinandroid-hilt = { id = "nowinandroid.hilt" }
nowinandroid-jvm-library = { id = "nowinandroid.jvm.library" }
nowinandroid-root = { id = "nowinandroid.root" }

Loading…
Cancel
Save