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 id = libs.plugins.nowinandroid.jvm.library.get().pluginId
implementationClass = "JvmLibraryConventionPlugin" 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.android.build.api.variant.ApplicationAndroidComponentsExtension
import com.google.samples.apps.nowinandroid.configureBadgingTasks import com.google.samples.apps.nowinandroid.configureBadgingTasks
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices 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.configureKotlinAndroid
import com.google.samples.apps.nowinandroid.configurePrintApksTask import com.google.samples.apps.nowinandroid.configurePrintApksTask
import org.gradle.api.Plugin import org.gradle.api.Plugin
@ -46,7 +45,6 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
configurePrintApksTask(this) configurePrintApksTask(this)
configureBadgingTasks(extensions.getByType<ApplicationExtension>(), 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.android.build.api.variant.LibraryAndroidComponentsExtension
import com.google.samples.apps.nowinandroid.configureFlavors import com.google.samples.apps.nowinandroid.configureFlavors
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices 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.configureKotlinAndroid
import com.google.samples.apps.nowinandroid.configurePrintApksTask import com.google.samples.apps.nowinandroid.configurePrintApksTask
import com.google.samples.apps.nowinandroid.disableUnnecessaryAndroidTests import com.google.samples.apps.nowinandroid.disableUnnecessaryAndroidTests
@ -60,7 +59,6 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
"implementation"(libs.findLibrary("androidx.tracing.ktx").get()) "implementation"(libs.findLibrary("androidx.tracing.ktx").get())
} }
configureGraphTasks()
} }
} }
} }

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

@ -14,7 +14,6 @@
* limitations under the License. * limitations under the License.
*/ */
import com.google.samples.apps.nowinandroid.configureGraphTasks
import com.google.samples.apps.nowinandroid.configureKotlinJvm import com.google.samples.apps.nowinandroid.configureKotlinJvm
import com.google.samples.apps.nowinandroid.libs import com.google.samples.apps.nowinandroid.libs
import org.gradle.api.Plugin import org.gradle.api.Plugin
@ -32,7 +31,6 @@ class JvmLibraryConventionPlugin : Plugin<Project> {
dependencies { dependencies {
"testImplementation"(libs.findLibrary("kotlin.test").get()) "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 dumpTask = tasks.register<GraphDumpTask>("graphDump") {
val graph = Graph(this@configureGraphTasks).invoke() val graph = Graph(this@configureGraphTasks).invoke()
projectPath = this@configureGraphTasks.path projectPath = this@configureGraphTasks.path

@ -38,4 +38,5 @@ plugins {
alias(libs.plugins.roborazzi) apply false alias(libs.plugins.roborazzi) apply false
alias(libs.plugins.google.osslicenses) apply false alias(libs.plugins.google.osslicenses) apply false
alias(libs.plugins.room) 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-android-test = { id = "nowinandroid.android.test" }
nowinandroid-hilt = { id = "nowinandroid.hilt" } nowinandroid-hilt = { id = "nowinandroid.hilt" }
nowinandroid-jvm-library = { id = "nowinandroid.jvm.library" } nowinandroid-jvm-library = { id = "nowinandroid.jvm.library" }
nowinandroid-root = { id = "nowinandroid.root" }

Loading…
Cancel
Save