private GradleLauncher buildGradleLauncher(StartParameter startParameter) { StartParameter startParameterArg = startParameter.newInstance(); startParameterArg.setProjectProperties(startParameter.getProjectProperties()); startParameterArg.setSearchUpwards(false); startParameterArg.setProfile(startParameter.isProfile()); GradleLauncher gradleLauncher = nestedBuildFactory.nestedInstance(startParameterArg); GradleInternal build = gradleLauncher.getGradle(); if (build.getParent().findIdentityPath() == null) { // When nested inside a nested build, we need to synthesize a path for this build, as the root project is not yet known for the parent build // Use the directory structure to do this. This means that the buildSrc build and its containing build may end up with different paths Path path = build.getParent().getParent().getIdentityPath().child(startParameter.getCurrentDir().getParentFile().getName()).child(startParameter.getCurrentDir().getName()); build.setIdentityPath(path); } return gradleLauncher; } }
@Override public SettingsInternal findAndLoadSettings(GradleInternal gradle) { StartParameter startParameter = gradle.getStartParameter(); SettingsInternal settings = findSettingsAndLoadIfAppropriate(gradle, startParameter); ProjectSpec spec = ProjectSpecs.forStartParameter(startParameter, settings); if (spec.containsProject(settings.getProjectRegistry())) { setDefaultProject(spec, settings); return settings; } // Try again with empty settings StartParameter noSearchParameter = startParameter.newInstance(); noSearchParameter.useEmptySettings(); settings = findSettingsAndLoadIfAppropriate(gradle, noSearchParameter); // Set explicit build file, if required if (noSearchParameter.getBuildFile() != null) { ProjectDescriptor rootProject = settings.getRootProject(); rootProject.setBuildFileName(noSearchParameter.getBuildFile().getName()); } setDefaultProject(spec, settings); return settings; }