ModulesBuildSettings (Collection<? extends ProjectTask> buildTasks) { Collection<Module> modules = new SmartList<>(); Collection<ModuleBuildTask> incrementalTasks = new SmartList<>(); Collection<ModuleBuildTask> excludeDependentTasks = new SmartList<>(); Collection<ModuleBuildTask> excludeRuntimeTasks = new SmartList<>(); Collection<ModuleBuildTask> excludeTests = new SmartList<>(); for (ProjectTask buildProjectTask : buildTasks) { ModuleBuildTask moduleBuildTask = (ModuleBuildTask)buildProjectTask; modules.add(moduleBuildTask.getModule()); if (moduleBuildTask.isIncrementalBuild()) { incrementalTasks.add(moduleBuildTask); } if (!moduleBuildTask.isIncludeDependentModules()) { excludeDependentTasks.add(moduleBuildTask); } if (!moduleBuildTask.isIncludeRuntimeDependencies()) { excludeRuntimeTasks.add(moduleBuildTask); } if (!moduleBuildTask.isIncludeTests()) { excludeTests.add(moduleBuildTask); } } boolean isIncrementalBuild = incrementalTasks.size() == buildTasks.size(); boolean includeDependentModules = excludeDependentTasks.size() != buildTasks.size(); boolean includeRuntimeDependencies = excludeRuntimeTasks.size() != buildTasks.size(); boolean includeTests = excludeTests.size() != buildTasks.size(); if (!isIncrementalBuild && !incrementalTasks.isEmpty()) { assertModuleBuildSettingsConsistent(incrementalTasks, "will be built ignoring incremental build setting"); } if (includeDependentModules && !excludeDependentTasks.isEmpty()) { assertModuleBuildSettingsConsistent(excludeDependentTasks, "will be built along with dependent modules"); } if (includeRuntimeDependencies && !excludeRuntimeTasks.isEmpty()) { assertModuleBuildSettingsConsistent(excludeRuntimeTasks, "will be built along with runtime dependencies"); } if (includeTests && !excludeTests.isEmpty()) { assertModuleBuildSettingsConsistent(excludeTests, "will be built along with test classes"); } return new ModulesBuildSettings(isIncrementalBuild, includeDependentModules, includeRuntimeDependencies, includeTests, modules); }