override fun execute()

in plugin/src/main/kotlin/com/android/gradle/replicator/GatherModuleInfoTask.kt [260:307]


        override fun execute(task: GatherModuleInfoTask) {
            task.projectPath.set(project.path)
            task.projectPath.disallowChanges()

            // gather known plugins
            val pluginContainer = project.plugins
            val appliedPlugins = mutableSetOf<PluginType>()
            for (plugin in PluginType.values()) {
                if (pluginContainer.hasPlugin(plugin.id) || pluginContainer.hasPlugin(plugin.oldId)) {
                    appliedPlugins.add(plugin)
                }
            }
            task.plugins.set(appliedPlugins.toList().sorted())
            task.plugins.disallowChanges()

            // get android Inputs. This can be set to null if the plugin does not exist.
            if (appliedPlugins.containsAndroid()) {
                task.androidInputs.set(DefaultAndroidCollector().collectInfo(project))
            }
            task.androidInputs.disallowChanges()

            if (appliedPlugins.containsJava()) {
                val javaConvention = project.convention.findPlugin(JavaPluginConvention::class.java)
                if (javaConvention != null) {
                    val mainSrcSet = javaConvention.sourceSets.findByName(SourceSet.MAIN_SOURCE_SET_NAME)
                    // Java source files
                    mainSrcSet?.allSource?.srcDirs?.let {
                        task.javaSourceSets.from(it)
                    }
                    // Java resources
                    mainSrcSet?.resources?.srcDirs?.let {
                        task.javaResourceSets.from(it)
                    }
                }
            }
            task.javaSourceSets.disallowChanges()
            task.javaResourceSets.disallowChanges()

            // dependencies
            task.dependencies.set(project.configurations.asSequence()
                .filter { relevantConfigurations.contains(it.name) }
                .flatMap { gatherDependencies(it).asSequence() }
                .toSet().toList().sortedBy { it.dependency })
            task.dependencies.disallowChanges()

            task.outputFile.set(project.layout.buildDirectory.file("local-module-info.json"))
            task.outputFile.disallowChanges()
        }