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()
}