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"));
});
}