public void apply()

in build-tools/src/main/java/co/elastic/otel/android/compilation/tools/plugins/RootNoticeProviderPlugin.java [18:57]


    public void apply(Project project) {
        Configuration bucket = project.getConfigurations().create("noticeProducer", configuration -> {
            configuration.setCanBeConsumed(false);
            configuration.setCanBeResolved(false);
        });
        Configuration licensedDependencies = getLicensedDependencies(project, bucket);
        Configuration noticeFiles = getNoticeFiles(project, bucket);

        TaskProvider<SubprojectPomLicensesMergerTask> pomLicenses = project.getTasks().register("mergeSubprojectLicensedDependencies", SubprojectPomLicensesMergerTask.class, task -> {
            task.getSubprojectLicensedDependenciesFiles().from(licensedDependencies);
            task.getMergedSubprojectLicensedDependencies().set(project.getLayout().getBuildDirectory().file(task.getName() + "/merged_dependencies.txt"));
        });

        TaskProvider<SubprojectNoticesCollectorTask> noticeFilesCollector = project.getTasks().register("mergeSubprojectNoticeFiles", SubprojectNoticesCollectorTask.class, task -> {
            task.getSubprojectNoticeFiles().from(noticeFiles);
            task.getMergedSubprojectNoticeFiles().set(project.getLayout().getBuildDirectory().dir(task.getName()));
        });

        TaskProvider<NoticeMergerTask> noticeFilesMerger = project.getTasks().register("noticeFilesMerger", NoticeMergerTask.class, task -> {
            task.getNoticeFilesDir().set(noticeFilesCollector.flatMap(SubprojectNoticesCollectorTask::getMergedSubprojectNoticeFiles));
            task.getOutputFile().set(project.getLayout().getBuildDirectory().file(task.getName() + "/" + "mergedNotice.txt"));
        });

        TaskProvider<CreateDependenciesListTask> licensesDependencies = project.getTasks().register("createDependenciesList", CreateDependenciesListTask.class, task -> {
            task.getLicensesFound().set(pomLicenses.flatMap(SubprojectPomLicensesMergerTask::getMergedSubprojectLicensedDependencies));
            task.getOutputFile().set(project.getLayout().getBuildDirectory().file(task.getName() + "/" + "licensed_dependencies.txt"));
        });

        TaskProvider<CreateNoticeTask> createRootNoticeFile = project.getTasks().register("createRootNoticeFile", CreateNoticeTask.class, task -> {
            task.getMergedNoticeFiles().from(noticeFilesMerger.flatMap(NoticeMergerTask::getOutputFile));
            task.getLicensedDependencies().set(licensesDependencies.flatMap(CreateDependenciesListTask::getOutputFile));
            task.getFoundLicensesIds().set(pomLicenses.flatMap(SubprojectPomLicensesMergerTask::getMergedSubprojectLicensedDependencies));
            task.getOutputDir().set(project.getLayout().getBuildDirectory().dir(task.getName()));
        });

        project.getTasks().register(TASK_CREATE_NOTICE_FILE_NAME, CopySingleFileTask.class, task -> {
            task.getInputFile().set(createRootNoticeFile.get().getOutputDir().file("META-INF/NOTICE"));
            task.getOutputFile().set(project.getLayout().getProjectDirectory().file("NOTICE"));
        });
    }