public void apply()

in build-tools/src/main/java/co/elastic/otel/android/compilation/tools/plugins/subprojects/AarNoticeProviderPlugin.java [31:82]


    public void apply(Project project) {
        super.apply(project);
        AndroidApmExtension apmExtension = project.getExtensions().create("androidNotice", AndroidApmExtension.class);

        AndroidComponentsExtension<?, ?, Variant> componentsExtension = project.getExtensions().getByType(AndroidComponentsExtension.class);
        componentsExtension.onVariants(componentsExtension.selector().all(), variant -> {
            ComponentImpl component = (ComponentImpl) variant;
            Configuration runtimeClasspath = component.getVariantDependencies().getRuntimeClasspath();
            Configuration apmToolsClasspath = wrapConfiguration(project, variant, runtimeClasspath);
            List<Configuration> runtimeConfigs = getRuntimeConfigurations(project, apmToolsClasspath);
            TaskProvider<DependenciesHasherTask> dependenciesHasher = project.getTasks().register(variant.getName() + "DependenciesHasher", DependenciesHasherTask.class, task -> {
                task.getRuntimeDependencies().set(runtimeConfigs);
                task.getOutputFile().set(project.getLayout().getBuildDirectory().file(task.getName() + "/" + "dependencies_hash.txt"));
            });
            TaskProvider<PomLicensesCollectorTask> pomLicensesFinder = project.getTasks().register(variant.getName() + "DependenciesLicencesFinder", PomLicensesCollectorTask.class, task -> {
                task.getRuntimeDependencies().set(runtimeConfigs);
                task.getLicensesFound().set(project.getLayout().getBuildDirectory().file(task.getName() + "/licenses.txt"));
                task.getManualLicenseMapping().set(licensesConfig.getManualMappingFile().getAsFile());
            });
            TaskProvider<NoticeFilesCollectorTask> noticeCollector = project.getTasks().register(variant.getName() + "NoticeFilesCollector", NoticeFilesCollectorTask.class, task -> {
                task.getRuntimeDependencies().set(runtimeConfigs);
                task.getOutputDir().set(project.getLayout().getBuildDirectory().dir(task.getName()));
            });
            TaskProvider<NoticeMergerTask> noticeFilesMerger = project.getTasks().register(variant.getName() + "NoticeFilesMerger", NoticeMergerTask.class, task -> {
                task.getNoticeFilesDir().set(noticeCollector.flatMap(NoticeFilesCollectorTask::getOutputDir));
                task.getOutputFile().set(project.getLayout().getBuildDirectory().file(task.getName() + "/" + "mergedNotice.txt"));
            });
            TaskProvider<CreateDependenciesListTask> licensesDependencies = project.getTasks().register(variant.getName() + "CreateDependenciesList", CreateDependenciesListTask.class, task -> {
                task.getLicensesFound().set(pomLicensesFinder.flatMap(PomLicensesCollectorTask::getLicensesFound));
                task.getOutputFile().set(project.getLayout().getBuildDirectory().file(task.getName() + "/" + "licensed_dependencies.txt"));
            });
            TaskProvider<CreateNoticeTask> createNotice = project.getTasks().register(variant.getName() + StringUtils.capitalize(TASK_CREATE_NOTICE_FILE_NAME), CreateNoticeTask.class, task -> {
                task.getMergedNoticeFiles().from(noticeFilesMerger.flatMap(NoticeMergerTask::getOutputFile));
                task.getLicensedDependencies().set(licensesDependencies.flatMap(CreateDependenciesListTask::getOutputFile));
                task.getFoundLicensesIds().set(pomLicensesFinder.flatMap(PomLicensesCollectorTask::getLicensesFound));
                task.getDependenciesHashFile().set(dependenciesHasher.flatMap(DependenciesHasherTask::getOutputFile));
                task.getOutputDir().set(project.getLayout().getBuildDirectory().dir(task.getName()));
            });
            if (apmExtension.variantName.get().equals(variant.getName())) {
                component.getSources().getResources().addGeneratedSourceDirectory(createNotice, CreateNoticeTask::getOutputDir);
                project.getTasks().register(TASK_CREATE_NOTICE_FILE_NAME, CopySingleFileTask.class, task -> {
                    task.getInputFile().set(createNotice.get().getOutputDir().file("META-INF/NOTICE"));
                    task.getOutputFile().set(project.getLayout().getProjectDirectory().file("src/main/resources/META-INF/NOTICE"));
                });
                project.getTasks().register(TASK_VERIFY_NOTICE_FILE_NAME, DependenciesVerifierTask.class, task -> {
                    task.getDependenciesHashFile().set(dependenciesHasher.flatMap(DependenciesHasherTask::getOutputFile));
                });
                setUpLicensedDependencies(project, pomLicensesFinder);
                setUpNoticeFilesProvider(project, noticeCollector);
            }
        });
    }